summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/main.js1
-rw-r--r--src/client/view/selection.js33
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; },
};