diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-21 13:00:43 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-21 13:01:02 +0200 |
| commit | 37580fcafdc94c55e880a989dc7103e97ed9edd2 (patch) | |
| tree | 05dd6295587bb13eb1fa69e32154b00a5b49df1d /src/client/view | |
| parent | 7a0e3ede4f2c6fb081c8d308d5e2a8e81dcb14fd (diff) | |
Return of the bubble. Fixes #253
Diffstat (limited to 'src/client/view')
| -rw-r--r-- | src/client/view/bubble.js | 28 | ||||
| -rw-r--r-- | src/client/view/graph_view.js | 27 |
2 files changed, 43 insertions, 12 deletions
diff --git a/src/client/view/bubble.js b/src/client/view/bubble.js new file mode 100644 index 00000000..70dc5d09 --- /dev/null +++ b/src/client/view/bubble.js @@ -0,0 +1,28 @@ +define(["jquery", "Bacon"], function ($, Bacon) { +function Bubble(raw_parent, radius) { + var xmlns = "http://www.w3.org/2000/svg"; + var g = document.createElementNS(xmlns, 'g'); + var circle = document.createElementNS(xmlns, 'circle'); + + var setTransformToCenter = function (elem) { + var width = $(document.body).innerWidth(); + var height = $(document.body).innerHeight(); + + elem.setAttribute('transform', 'translate(' + width / 2 + ',' + height / 2 + ')'); + } + + g.appendChild(circle); + raw_parent.appendChild(g); + setTransformToCenter(g); + circle.className.baseVal = 'circle bubble'; + circle.id = 'bubble'; + + radius.onValue(function (r) { + setTransformToCenter(g); + circle.setAttribute("r", r); + }) +} +return { + Bubble:Bubble +} +}); diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js index d191df90..f8180495 100644 --- a/src/client/view/graph_view.js +++ b/src/client/view/graph_view.js @@ -25,8 +25,8 @@ * which resulted in overly complex (read: undefined/buggy) code. */ -define(['d3', 'Bacon', 'util', 'view/selection', 'view/helpers', 'model/diff', 'view/view'], -function(d3 , Bacon , util , selection , view_helpers, model_diff , view) { +define(['d3', 'Bacon', 'util', 'view/selection', 'view/helpers', 'model/diff', 'view/view', 'view/bubble'], +function(d3 , Bacon , util , selection , view_helpers, model_diff , view, view_bubble) { /* debugging helper */ function enableDebugViewOfDiffs(graph) @@ -126,16 +126,19 @@ function GraphView(spec) { // // Animation target is set by stream, and initialized if not already if (spec.bubble_property) { - spec.bubble_property - .skipDuplicates() - .onValue(function (r) { - var now = (new Date()).getTime(); - gv.layout_animation.bubble_radius.target = r; - gv.layout_animation.bubble_radius.start = gv.bubble_radius; - gv.layout_animation.starttime = now; - gv.layout_animation.endtime = now + 300; // FIXME: use constant change? - start_layout_animation(); - }); + if (temporary) { + view_bubble.Bubble(parent_element[0][0], spec.bubble_property); + } else { + spec.bubble_property + .onValue(function (r) { + var now = (new Date()).getTime(); + gv.layout_animation.bubble_radius.target = r; + gv.layout_animation.bubble_radius.start = gv.bubble_radius; + gv.layout_animation.starttime = now; + gv.layout_animation.endtime = now + 300; // FIXME: use constant change? + start_layout_animation(); + }); + } } graph.diffBus.onValue(function (diff) { |
