@@ -44,27 +44,30 @@ function timeseries_col(app, session)
44
44
end
45
45
46
46
function timeseries_cards (app, session)
47
- cards = OrderedDict {String,Bonito.Hyperscript.Node{Bonito.Hyperscript.HTMLSVG}} ()
48
- observables = OrderedDict {String, Vector{Observables.ObserverFunction}} ()
47
+ # we store the cards based on objid of TSPlot, otherwise overwrite with same key
48
+ # leads to problems
49
+ cards = OrderedDict {UInt, Bonito.Hyperscript.Node{Bonito.Hyperscript.HTMLSVG}} ()
50
+ observables = OrderedDict {UInt, Vector{Observables.ObserverFunction}} ()
49
51
container = Observable {Bonito.Hyperscript.Node{Bonito.Hyperscript.HTMLSVG}} ()
50
52
51
53
on (app. tsplots; update= true ) do _tsplots
52
54
@debug " TS: app.tsplots => update timeseries cards"
53
- newkeys = collect (keys (_tsplots)) # collect to preserv order on setdiff
54
- knownkeys = keys (cards)
55
-
56
- for delkey in setdiff (knownkeys, newkeys)
57
- Observables. off .(observables[delkey]) # deactivate allobservables from card
58
- delete! (observables, delkey)
59
- delete! (cards, delkey)
55
+ id_to_key = Dict (Base. objectid (val) => key for (key, val) in _tsplots)
56
+ newids = Base. objectid .(values (_tsplots)) # collect to preserv order on setdiff
57
+ knownids = keys (cards)
58
+
59
+ for delid in setdiff (knownids, newids)
60
+ Observables. off .(observables[delid]) # deactivate allobservables from card
61
+ delete! (observables, delid)
62
+ delete! (cards, delid)
60
63
end
61
- for newkey in setdiff (newkeys, knownkeys )
62
- card, obsf = timeseries_card (app, newkey , session)
63
- cards[newkey ] = card
64
- observables[newkey ] = obsf
64
+ for newid in setdiff (newids, knownids )
65
+ card, obsf = timeseries_card (app, id_to_key[newid] , session)
66
+ cards[newid ] = card
67
+ observables[newid ] = obsf
65
68
end
66
- if keys (cards) != keys (_tsplots)
67
- @warn " The keys do not match: $(keys (cards)) vs $(keys (_tsplots) ) "
69
+ if collect ( keys (cards)) != newids
70
+ @warn " The keys do not match: $(keys (cards)) vs $(newids ) "
68
71
end
69
72
70
73
container[] = DOM. div (values (cards)... ; class= " timeseries-stack" )
0 commit comments