Skip to content

Commit 01fd71d

Browse files
committed
move stuff to utils.jl
1 parent d583fb4 commit 01fd71d

File tree

2 files changed

+79
-93
lines changed

2 files changed

+79
-93
lines changed

NetworkDynamicsInspector/src/NetworkDynamicsInspector.jl

Lines changed: 3 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,15 @@ using GraphMakie.NetworkLayout
1616
export ContinuousSlider, RoundedLabel
1717
include("widgets.jl")
1818

19+
export wrap_assets
20+
include("utils.jl")
21+
1922
function apptheme()
2023
Theme(
2124
fontsize=10,
2225
)
2326
end
2427

25-
export wrap_assets
26-
function wrap_assets(appdom)
27-
jquery = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js")
28-
select2_css = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css")
29-
select2_js = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js")
30-
css = Asset(joinpath(pkgdir(NetworkDynamicsInspector), "assets", "app.css"))
31-
32-
DOM.body(
33-
jquery,
34-
select2_css,
35-
select2_js,
36-
css,
37-
appdom;
38-
)
39-
end
40-
4128
function graphplot_card(app; kwargs...)
4229
nw = map!(extract_nw, Observable{Network}(), app.sol)
4330
NV = nv(nw[])
@@ -334,35 +321,6 @@ function _maxrange(sol, idxs, rel)
334321
extrema(Iterators.flatten(u_for_t))
335322
end
336323

337-
function gen_state_options(nw::Network, sidxs)
338-
options = OptionGroup{Symbol}[]
339-
isempty(sidxs) && return options
340-
groups = [
341-
("Outputs & States", cf -> unique!(vcat(NetworkDynamics.outsym_flat(cf), sym(cf)))),
342-
("Inputs", cf -> collect(NetworkDynamics.insym_all(cf))),
343-
("Observables", obssym),
344-
("Parameters", psym),
345-
]
346-
exclusive_syms = Symbol[]
347-
for (label, getter) in groups
348-
common_syms = mapreduce(, sidxs) do sidx
349-
cf = nw[sidx]
350-
getter(cf)
351-
end
352-
push!(options, OptionGroup{Symbol}(label, common_syms))
353-
354-
all_syms = mapreduce(, sidxs) do sidx
355-
cf = nw[sidx]
356-
getter(cf)
357-
end
358-
append!(exclusive_syms, setdiff(all_syms, common_syms))
359-
end
360-
if !isempty(exclusive_syms)
361-
push!(options, OptionGroup{Symbol}("Partially available syms", exclusive_syms))
362-
end
363-
options
364-
end
365-
366324
function timeseries_card(app, session)
367325
comp_options = Observable{Vector{OptionGroup{SymbolicIndex}}}()
368326
on(app.sol; update=true) do _sol
@@ -560,52 +518,4 @@ function _smallest_free(d::Dict)
560518
return i
561519
end
562520

563-
564-
function clear_obs!(nt::NamedTuple)
565-
for v in values(nt)
566-
clear_obs!(v)
567-
end
568-
end
569-
clear_obs!(obs::Observable) = empty!(obs.listeners)
570-
clear_obs!(x) = x
571-
572-
# TODO: move to grpahmakie
573-
GraphMakie._dimensionality(obs::Observable, g) = GraphMakie._dimensionality(obs[], g)
574-
575-
576-
SERVER = Ref{Any}(nothing)
577-
578-
export serve_app
579-
function serve_app(newapp)
580-
if !isnothing(SERVER[]) && Bonito.HTTPServer.isrunning(SERVER[])
581-
@info "Stop running server..."
582-
close(SERVER[])
583-
end
584-
SERVER[] = Bonito.Server(newapp, "0.0.0.0", 8080)
585-
end
586-
587-
# APP = Ref{Any}(nothing)
588-
# function serve_app(newapp)
589-
# if isnothing(SERVER[]) || !Bonito.HTTPServer.isrunning(SERVER[])
590-
# @info "Start new SErver"
591-
# SERVER[] = Bonito.Server(newapp, "0.0.0.0", 8080)
592-
# APP[] = newapp
593-
# else
594-
# oldapp = APP[]
595-
# APP[] = newapp
596-
# @info "Update App"
597-
# Bonito.update_app!(oldapp, newapp)
598-
# end
599-
# nothing
600-
# end
601-
602-
NetworkDynamics.extract_nw(o::Observable) = extract_nw(o.val)
603-
function NetworkDynamics.extract_nw(o::NamedTuple)
604-
if haskey(o, :sol)
605-
return extract_nw(o.sol)
606-
else
607-
error("No sol in NamedTuple")
608-
end
609-
end
610-
611521
end # module NetworkDynamicsInspector

NetworkDynamicsInspector/src/utils.jl

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
function wrap_assets(appdom)
3+
jquery = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js")
4+
select2_css = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css")
5+
select2_js = Asset("https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js")
6+
css = Asset(joinpath(pkgdir(NetworkDynamicsInspector), "assets", "app.css"))
7+
8+
DOM.body(
9+
jquery,
10+
select2_css,
11+
select2_js,
12+
css,
13+
appdom;
14+
)
15+
end
16+
17+
function gen_state_options(nw::Network, sidxs)
18+
options = OptionGroup{Symbol}[]
19+
isempty(sidxs) && return options
20+
groups = [
21+
("Outputs & States", cf -> unique!(vcat(NetworkDynamics.outsym_flat(cf), sym(cf)))),
22+
("Inputs", cf -> collect(NetworkDynamics.insym_all(cf))),
23+
("Observables", obssym),
24+
("Parameters", psym),
25+
]
26+
exclusive_syms = Symbol[]
27+
for (label, getter) in groups
28+
common_syms = mapreduce(, sidxs) do sidx
29+
cf = nw[sidx]
30+
getter(cf)
31+
end
32+
push!(options, OptionGroup{Symbol}(label, common_syms))
33+
34+
all_syms = mapreduce(, sidxs) do sidx
35+
cf = nw[sidx]
36+
getter(cf)
37+
end
38+
append!(exclusive_syms, setdiff(all_syms, common_syms))
39+
end
40+
if !isempty(exclusive_syms)
41+
push!(options, OptionGroup{Symbol}("Partially available syms", exclusive_syms))
42+
end
43+
options
44+
end
45+
46+
function clear_obs!(nt::NamedTuple)
47+
for v in values(nt)
48+
clear_obs!(v)
49+
end
50+
end
51+
clear_obs!(obs::Observable) = empty!(obs.listeners)
52+
clear_obs!(x) = x
53+
54+
# TODO: move to grpahmakie
55+
GraphMakie._dimensionality(obs::Observable, g) = GraphMakie._dimensionality(obs[], g)
56+
57+
58+
SERVER = Ref{Any}(nothing)
59+
export serve_app
60+
function serve_app(newapp)
61+
if !isnothing(SERVER[]) && Bonito.HTTPServer.isrunning(SERVER[])
62+
@info "Stop running server..."
63+
close(SERVER[])
64+
end
65+
SERVER[] = Bonito.Server(newapp, "0.0.0.0", 8080)
66+
end
67+
68+
69+
NetworkDynamics.extract_nw(o::Observable) = extract_nw(o.val)
70+
function NetworkDynamics.extract_nw(o::NamedTuple)
71+
if haskey(o, :sol)
72+
return extract_nw(o.sol)
73+
else
74+
error("No sol in NamedTuple")
75+
end
76+
end

0 commit comments

Comments
 (0)