Plot events
Detect mouse events on a plot.
To capture click events on a plot, use the @mounted watchplots() instruction. This will execute watchplots() when the page is loaded, which will generate the code and dictionary variables in the front end to capture click events. The name of these dictionaries and the information they capture is is:
To make these variables accessible from the Julia code, define an input variable with @in with the same name. Then, their contents can be watched with an @onchange block.
module App
using GenieFramework, PlotlyBase, StipplePlotly
@genietools
trace1 = scatter(; x=1:4, y=[0, 2, 3, 5], fill="tozeroy")
trace2 = scatter(; x=1:4, y=[3, 5, 1, 7], fill="tonexty")
@app begin
@out traces = [trace1, trace2]
@out plotlayout = PlotlyBase.Layout(title="Filled line chart")
@in data_click = Dict{String,Any}()
@in data_hover = Dict{String,Any}()
@in data_selected = Dict{String,Any}()
@in data_cursor = Dict{String,Any}()
@in data_relayout = Dict{String,Any}()
@onchange data_click begin
@show data_click
end
@onchange data_hover begin
@show data_hover
end
@onchange data_selected begin
@show data_selected
end
@onchange data_cursor begin
@show data_cursor
end
@onchange data_relayout begin
@show data_relayout
end
end
@mounted watchplots()
ui() = plot(:traces, layout=:plotlayout, class="sync_data")
@page("/", ui)
Server.isrunning() || Server.up()
end