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 в собственный проект.