diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/main.js | 1 | ||||
| -rw-r--r-- | src/client/view/selection.js | 33 |
2 files changed, 32 insertions, 2 deletions
diff --git a/src/client/main.js b/src/client/main.js index 42d22aff..e4b5b099 100644 --- a/src/client/main.js +++ b/src/client/main.js @@ -60,6 +60,7 @@ function(textanalysis_ui, textanalysis, buttons, history, drag_n_drop, model_core.init(rz_config); textanalysis.init(rz_core.main_graph); search.init(); + selection.setup_merge_button(rz_core.main_graph); $.feedback({ajaxURL: rz_config.feedback_url}); } 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; }, }; |
