Сообщество Engee

Простейшие Genie-приложения

Автор
avatar-artpgchartpgch
Notebook

Genie-приложения на примере вычисления логарифма

Введение

В данном примере представлены простейшие интерактивные приложения для вычисления логарифмов:

Где:

  • — основание логарифма
  • — аргумент логарифма
  • — значение логарифма.

То есть выполняется условие:

Реактивный интерфейс

Рассмотрим скрипт приложения с реактивным интерфейсом.

using GenieFramework, Stipple

@genietools
@app begin
    @in x = 2.0
    @in y = 8.0
    @out a = 3.0
    @onchange x, y begin
            a = log(x, y)
    end
end

function ui()
    row([column([ textfield("Основание:", :x, type="number", min=0),
                  textfield("Число:", :y, type="number", min=0),
                  textfield("Значение логарифма:", :a, readonly=true) ])])
end

@page("/", ui)

Запустим приложение.

In [ ]:
genie_app1 = engee.genie.start("$(@__DIR__)/log_app1.jl")
display("text/html", """<a href="$(string(genie_app1.url))" target="_blank">Открыть в новой вкладке</a>""")
image.png

Пользователю достаточно ввести в первую строку основание, а во вторую аргумент логарифма. Вычисление значение логарифма происходит автоматически после ввода исходных данных.

Запуск с кнопки

Рассмотрим скрипт приложения, вычисления в котором происходят с кликом кнопки.

using GenieFramework, Stipple

@genietools
@app begin
    @in x = 2.0
    @in y = 8.0
    @in кнопка = false
    @out a = 3.0
    @onchange кнопка begin
        if кнопка
            a = log(x, y)
            кнопка = false

        end
    end
end

function ui()
    row([ column([ textfield("Основание:", :x, type="number", min=0),
                   textfield("Число:", :y, type="number", min=0),
                   textfield("Значение логарифма:", :a, readonly=true),
                   btn("Вычислить", @click(:кнопка)) ])])
end

@page("/", ui)

Запустим приложение.

In [ ]:
genie_app2 = engee.genie.start("$(@__DIR__)/log_app2.jl")
display("text/html", """<a href="$(string(genie_app2.url))" target="_blank">Открыть в новой вкладке</a>""")
image.png

Как и в предыдущем приложении, пользователю необходимо ввести исходные данные в первые две строки. Однако здесь вычисление происходит после нажатия кнопки "Вычислить".

Остановим приложения.

In [ ]:
engee.genie.stop("$(@__DIR__)/log_app1.jl");
engee.genie.stop("$(@__DIR__)/log_app2.jl");

Заключение

Представленные примеры наглядно демонстрируют гибкость Genie при создании интерактивных инструментов. От реактивного мгновенного просчёта до классического управления с помощью кнопки. Этот подход открывает широкие возможности для быстрого прототипирования инженерных калькуляторов, образовательных виджетов и корпоративных утилит прямо в среде Engee. Вы можете использовать представленные приложения как основу для ваших будущих проектов.