diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-05 15:01:56 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-05 15:01:56 +0200 |
| commit | d1b4c93a1a0c9c558ef13a6d16449d7a34668ea9 (patch) | |
| tree | d953a954686418332e37eec5ef0f36a3888c830d /src/client | |
| parent | f8073a7c1a9a3b8cdf94d4267634491b82710aac (diff) | |
client/selection: fix node selection, use hash for selection instead of Node.state; link selection still broken
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/view/selection.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/client/view/selection.js b/src/client/view/selection.js index 2f2c20fb..386e22da 100644 --- a/src/client/view/selection.js +++ b/src/client/view/selection.js @@ -12,6 +12,7 @@ function get_rz_core() } var selected_nodes = [], + selected_nodes__by_id = {}, selectionChangedBus = new Bacon.Bus(); function listen_on_diff_bus(diffBus) @@ -55,6 +56,11 @@ function sortedArrayDiff(a, b, a_cmp_b) function updateSelectedNodesBus(new_selected_nodes) { selected_nodes = new_selected_nodes; + selected_nodes__by_id = selected_nodes.reduce( + function(d, v) { + d[v.id] = v; + return d; + }, {}); selectionChangedBus.push(selected_nodes); } @@ -102,8 +108,7 @@ function connectedComponent(nodes) { } var node_selected = function(node) { - return node.state == 'chosen' || node.state == 'enter' || node.state == 'exit' || node.state == 'selected' - || node.state == 'temp' || node.state == 'related'; + return selected_nodes__by_id[node.id] !== undefined; } var selected_class = function(node) { @@ -111,7 +116,7 @@ var selected_class = function(node) { } var clear = function() { - selected_nodes.length = 0; + updateSelectedNodesBus([]); get_rz_core().main_graph.setRegularState(); } |
