summaryrefslogtreecommitdiff
path: root/src/client/view/graph_view.js
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-04-05 10:37:07 +0300
committerAlon Levy <alon@pobox.com>2015-04-05 10:37:07 +0300
commit1726f89f4a8f5af68995f9598a120501e83f6645 (patch)
treed934198496e7a81e171b726a8b86235586a36016 /src/client/view/graph_view.js
parent53b025b1571b3bba43a3852a235714123fde6511 (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.js26
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();