AnyMath 文档
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">Open in a new tab</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">Open in a new tab</a>""")
image.png

与前一个应用程序一样,用户需要在前两行输入源数据。不过,此处的计算是在点击“计算”按钮后进行的。

停止应用程序。

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

结论

所提供的示例清楚地展示了Genie在创建交互式工具方面的灵活性,涵盖了从响应式即时计算到经典按钮控制的各种模式。这种方法为直接在Genie环境中快速原型设计工程计算器、教育小工具和企业实用程序提供了巨大机遇。您可以将此处介绍的应用程序作为未来项目的基础。