diff options
| author | Alon Levy <alon@pobox.com> | 2015-02-15 13:04:19 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-02-15 13:04:19 +0200 |
| commit | e4a6cafe94072ff68e6fbb34a0e59a8ee557ca85 (patch) | |
| tree | 634517ef0cf22c88fcf653bfb09329d09c3d5b3b /src/client/view | |
| parent | 56d2d3cd4a556fd88fd3018716a7b3f974a4e305 (diff) | |
client: add merge button, does nothing, enabled for two or more selected nodes
Diffstat (limited to 'src/client/view')
| -rw-r--r-- | src/client/view/selection.js | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/client/view/selection.js b/src/client/view/selection.js index f5d4c895..42823aed 100644 --- a/src/client/view/selection.js +++ b/src/client/view/selection.js @@ -1,6 +1,18 @@ define(['rz_core', 'Bacon', 'underscore'], function(rz_core, Bacon, _) { +function Selection() { +} + +function new_selection(nodes, root_nodes) +{ + var ret = new Selection(); + + ret.nodes = nodes; + ret.root_nodes = root_nodes; + return ret; +} + function get_main_graph() { // circular dependency on rz_core, so require.js cannot solve it. @@ -62,7 +74,7 @@ function updateSelectedNodesBus(new_selected_nodes) d[v.id] = v; return d; }, {}); - selectionChangedBus.push(selected_nodes); + selectionChangedBus.push(new_selection(selected_nodes, root_nodes)); } function byVisitors(node_selector, link_selector) { @@ -149,7 +161,8 @@ var inner_update = function(nodes) connectedComponent(nodes); } -var update = function(nodes, append) { +var update = function(nodes, append) +{ var new_nodes = append ? _.union(root_nodes, nodes) : nodes; var not_same = !arr_compare(new_nodes, root_nodes); @@ -158,6 +171,20 @@ var update = function(nodes, append) { } } +var setup_merge_button = function(main_graph) +{ + var merge_btn = $('#btn_merge'); + merge_btn.asEventStream('click').onValue(main_graph.mergeNodes); + selectionChangedBus.map(function (selection) { return selection.root_nodes.length > 1; }) + .onValue(function (visible) { + if (visible) { + merge_btn.show(); + } else { + merge_btn.hide(); + } + }); +} + return { byVisitors: byVisitors, connectedComponent: connectedComponent, @@ -168,6 +195,8 @@ return { node_selected: node_selected, link_selected: link_selected, selectionChangedBus: selectionChangedBus, + setup_merge_button: setup_merge_button, + __get_root_nodes: function() { return root_nodes; }, __get_selected_nodes: function() { return selected_nodes; }, }; |
