Документация Engee

StippleMathjs

Плагин StippleMathjs добавляет mathjs в проект Stipple или GenieFramwork.

Кроме того, он добавляет автоматическое преобразование всех типов чисел Complex между сервером и клиентом.

Пример приложения

using Stipple, Stipple.ReactiveTools
using StippleUI
using StippleMathjs


x0 = 1.0
y0 = 2.0

@app begin
    @in x = x0
    @in y = y0
    @in z = x0 + y0 * im
    @in z2::ComplexF64 = x0 + y0 * im

    @onchange x, y begin
        # обновляем z, не инициируя `@onchange z`
        z[!] = x + y * im

        # обновляем x и y в клиенте
        @push z
    end

    @onchange z begin
        # обновляем x и y, не инициируя `@onchange x, y`
        x[!] = z.re
        y[!] = z.im

        # обновляем x и y в клиенте
        @push x
        @push y
    end
end

@deps StippleMathjs

function ui()
    [
        card(class = "q-pa-md", [
            numberfield(class = "q-ma-md", "x", :x)
            numberfield(class = "q-ma-md", "y", :y)
        ])

        card(class = "q-pa-md q-my-md", [
            row([cell(col = 2, "z"),        cell("{{ z }}")])
            row([cell(col = 2, "z.mul(z)"), cell("{{ z.mul(z) }}")])
            row([cell(col = 2, "z.abs()"),  cell("{{ z.abs() }}")])

            btn(class = "q-my-md", "square(z)", color = "primary", @click("z = z.mul(z)"))
        ])
    ]
end

@page("/", ui, debounce = 10)
up()

Пример приложения с правильным содержимым файла Manifest.toml доступен в StippleDemos.jl.

Примечание

  • Из-за имеющейся в настоящее время в Stipple ошибки x0 и y0 необходимо определять вне цикла, чтобы у z был правильный тип. В качестве альтернативы можно объявить z явно, например, так: z::ComplexF64.

  • Этот пакет может служить хорошим примером внедрения исходного кода JavaScript в собственный проект.