diff options
| author | Alon Levy <alon@pobox.com> | 2015-02-25 00:22:53 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-02-25 00:22:53 +0200 |
| commit | 64324f317b6fbd9a1b636b0b21e123155f8153d4 (patch) | |
| tree | e9796eb67a99133b49d2151a0034b180c364f0ad /src/client/view/selection.js | |
| parent | 717200a13ce38ad113620a092f786e9b1ea6ee85 (diff) | |
client: selection tools: add link nodes in fan
Diffstat (limited to 'src/client/view/selection.js')
| -rw-r--r-- | src/client/view/selection.js | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/client/view/selection.js b/src/client/view/selection.js index d91bafbd..8f05f12d 100644 --- a/src/client/view/selection.js +++ b/src/client/view/selection.js @@ -1,6 +1,28 @@ define(['rz_core', 'Bacon', 'jquery', 'underscore'], function(rz_core, Bacon, $, _) { +function list_from_list_like(list_like) +{ + var list = [], + i; + + for (i = 0 ; i < list_like.length ; ++i) { + list.push(list_like[i]); + } + return list; +} + +function list_call(list, field) +{ + list.forEach(function (item) { + item[field].apply(item, list_from_list_like(arguments).slice(2)); + }); +} + +function root_nodes_ids() { + return _.pluck(root_nodes, 'id'); +} + function Selection() { } @@ -173,16 +195,25 @@ var update = function(nodes, append) var setup_merge_button = function(main_graph) { var merge_root_selection = function() { - main_graph.nodes__merge(_.pluck(root_nodes, 'id')); - } - var merge_btn = $('#btn_merge'); + main_graph.nodes__merge(root_nodes_ids()); + }, + link_fan_root_selection = function() { + main_graph.nodes__link_fan(root_nodes_ids()); + }, + merge_btn = $('#btn_merge'), + link_fan_btn = $('#btn_link_fan'), + buttons = [merge_btn, link_fan_btn]; + merge_btn.asEventStream('click').onValue(merge_root_selection); + link_fan_btn.asEventStream('click').onValue(link_fan_root_selection); + selectionChangedBus.map(function (selection) { return selection.root_nodes.length > 1; }) .onValue(function (visible) { if (visible) { - merge_btn.show(); + list_call(buttons, 'show'); } else { - merge_btn.hide(); + list_call(buttons, 'hide'); + buttons.forEach(function (btn) { btn.hide(); }); } }); } |
