diff options
| author | Alon Levy <alon@pobox.com> | 2015-04-05 10:37:07 +0300 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-04-05 10:37:07 +0300 |
| commit | 1726f89f4a8f5af68995f9598a120501e83f6645 (patch) | |
| tree | d934198496e7a81e171b726a8b86235586a36016 /src/client/view/graph_view.js | |
| parent | 53b025b1571b3bba43a3852a235714123fde6511 (diff) | |
client: layout: save/restore on layout change. resolve #432
Diffstat (limited to 'src/client/view/graph_view.js')
| -rw-r--r-- | src/client/view/graph_view.js | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js index 7326a229..770ee2d0 100644 --- a/src/client/view/graph_view.js +++ b/src/client/view/graph_view.js @@ -26,7 +26,7 @@ */ define(['d3', 'Bacon', 'consts', 'util', 'view/selection', 'view/helpers', 'model/diff', 'view/view', 'view/bubble', 'model/types', 'view/layouts'], -function(d3 , Bacon, consts, util , selection , view_helpers, model_diff , view, view_bubble, model_types, layouts) { +function(d3 , Bacon, consts, util , selection , view_helpers, model_diff , view, view_bubble, model_types, view_layouts) { "use strict" @@ -1143,6 +1143,10 @@ function GraphView(spec) { nodes.length + ' nodes'); } + var layouts = view_layouts.layouts.map(function (layout_data) { + return layout_data.create(graph); + }); + function set_layout_toolbar(selector) { var root = $(selector); root.on('click', function() { @@ -1153,13 +1157,15 @@ function GraphView(spec) { return; } - layouts.layouts.forEach(function (layout_data) { - var button = $('<div></div>'); + view_layouts.layouts.forEach(function (layout_data, i) { + var button_layout = layouts[i], + button = $('<div></div>'); + button.html(layout_data.name); button.addClass(layout_data.clazz); button.addClass('btn_layout'); button.on('click', function () { - set_layout(layout_data.create); + set_layout(button_layout); layout_btns.remove(); }); root.append(button); @@ -1167,24 +1173,30 @@ function GraphView(spec) { }); } - function set_layout(layout_creator) { + function set_layout(new_layout) { if (layout !== undefined) { + layout.save(); layout.stop(); } - layout = layout_creator(graph) + layout = new_layout .size([w, h]) .on("tick", pushRedraw) .on("end", record_position_to_local_storage) .nodes(graph.nodes()) .links(graph.links()) + .restore() .start(); } - set_layout(temporary ? layouts.empty : layouts.layouts[0].create); + set_layout(temporary ? view_layouts.empty(graph) : layouts[0]); if (!temporary) { set_layout_toolbar('#btn_layout'); } + gv.dev_set_layout = function (layout_func) { + set_layout(function () { return layouts.layout__sync(layout_func); }); + }; + zoom_property.onValue(function (val) { zoomInProgress = val; tick(); |
