diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-11 15:20:00 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-11 16:05:13 +0200 |
| commit | cd22d403c7840c4ba227d24de75a5f00de4314bf (patch) | |
| tree | aa11d7a4ffba653f8b5d93211a6e6e6159a2bf56 /src/client | |
| parent | 162e109be5002fb29babccaa81a51337cb7998f4 (diff) | |
client: cleanup selection
1. seperate root_nodes/selected_nodes
2. move graph update to rz_core.js
Fixes #213
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/rz_core.js | 7 | ||||
| -rw-r--r-- | src/client/view/selection.js | 15 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/client/rz_core.js b/src/client/rz_core.js index 3da4f8c7..626e29da 100644 --- a/src/client/rz_core.js +++ b/src/client/rz_core.js @@ -219,8 +219,11 @@ var initDrawingArea = function () { // we need to deduplicate this event // but there is no coordination, resulting in double updates. selection.selectionChangedBus.onValue( - function() { update_view__graph(false); - }); + function() { + main_graph.setRegularState(); + update_view__graph(false); + } + ); var user_id = $('#user_id'), user = user_id.text(); diff --git a/src/client/view/selection.js b/src/client/view/selection.js index 28c5e9a8..f8648732 100644 --- a/src/client/view/selection.js +++ b/src/client/view/selection.js @@ -11,7 +11,8 @@ function get_rz_core() return rz_core; } -var selected_nodes = [], +var root_nodes = [], // these are the nodes that are requested via update + selected_nodes = [], // these are the nodes that are highlighted, generally the neighbours of selection_request selected_nodes__by_id = {}, selectionChangedBus = new Bacon.Bus(); @@ -78,8 +79,6 @@ function connectedComponent(nodes) { link, data; - updateSelectedNodesBus(nodes.map(function(x) { return x; })); - for (i = 0 ; i < connected.nodes.length ; ++i) { data = connected.nodes[i]; node = data.node; @@ -105,6 +104,8 @@ function connectedComponent(nodes) { }; } nodes.forEach(function (n) { n.state = 'chosen'; }); + selected_nodes = connected.nodes.map(function (d) { return d.node; }).concat(nodes.slice()); + updateSelectedNodesBus(selected_nodes); } var node_selected = function(node) { @@ -116,13 +117,13 @@ var selected_class__node = function(node) { } var selected_class__link = function(link) { - return selected_nodes.length > 0 ? (node_selected(link.__src) || node_selected(link.__dst) ? + return selected_nodes.length > 0 ? (node_selected(link.__src) && node_selected(link.__dst) ? "selected" : "notselected") : ""; } var clear = function() { + root_nodes = []; updateSelectedNodesBus([]); - get_rz_core().main_graph.setRegularState(); } function arr_compare(a1, a2) @@ -139,9 +140,10 @@ function arr_compare(a1, a2) } var update = function(nodes) { - var set = !arr_compare(nodes, selected_nodes); + var set = !arr_compare(nodes, root_nodes); clear(); if (set) { + root_nodes = nodes; connectedComponent(nodes); } } @@ -155,6 +157,7 @@ return { selected_class__link: selected_class__link, node_selected: node_selected, selectionChangedBus: selectionChangedBus, + __get_root_nodes: function() { return root_nodes; }, __get_selected_nodes: function() { return selected_nodes; }, }; |
