diff options
| author | Alon Levy <alon@pobox.com> | 2015-05-05 10:25:38 +0300 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-05-05 10:25:38 +0300 |
| commit | 1ab3ab57e0b786315d69f86270aec11f3650131d (patch) | |
| tree | c4ec2bb19d008240620d0af22c6451165d605336 /src/client/messages.js | |
| parent | 2f6e26f09fac0cebd4240dc20575fea3b48e62ac (diff) | |
client: improve text of delete messages, fix #521
Diffstat (limited to 'src/client/messages.js')
| -rw-r--r-- | src/client/messages.js | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/src/client/messages.js b/src/client/messages.js index 306a80c9..370dab2f 100644 --- a/src/client/messages.js +++ b/src/client/messages.js @@ -1,26 +1,58 @@ -define( ['util', 'model/graph'], -function (util, graph) { +define( ['underscore', 'util', 'model/graph'], +function (_, util, graph) { function delete_items_message(items) { util.assert(items && items.length && items.length > 0); - return delete_items_message_helper(graph.is_node(items[0]) ? 'node' : 'link', items.length); + var nodes = _.filter(items, graph.is_node), + links = _.filter(items, graph.is_link); + + return delete_items_message_by_name(nodes, links); +} + +function delete_items_message_by_name(nodes, links) +{ + var middle, + node_names = _.map(_.map(nodes, 'name'), quoted), + link_names = _.map(_.map(links, 'name'), quoted); + + if (nodes.length > 0 && links.length > 0) { + middle = english_conjunction(node_names) + ', and ' + english_conjunction(link_names) + ' connections'; + } else if (nodes.length > 0) { + middle = english_conjunction(node_names); + } + return 'Delete ' + middle + '?'; +} + +function quoted(name) +{ + if (name.indexOf(' ') == -1) { + return name; + } + return '"' + name + '"' } -function delete_nodes_message(count) { - return delete_items_message_helper('node', count); +function english_conjunction(names) +{ + if (names.length == 1) { + return names[0]; + } + return names.slice(0, names.length - 1).join(', ') + ' and ' + names[names.length - 1]; } -function delete_items_message_helper(type, count) { - var descriptor = count > 1 ? '' + count + ' ' + type + 's' : 'a ' + type; +function delete_items_message_by_number(type, nodes, links) { + var count_nodes = nodes.length, + count_links = links.length, + make_descriptor = function (type, count) { return count > 1 ? '' + count + ' ' + type + 's' : 'a ' + type; }, + descriptor = make_descriptor('node', count_nodes) + + (count_links > 0 && count_nodes > 0 ? ' and ' : '') + make_descriptor('link', count_links); return 'You are about to delete ' + descriptor + ', are you sure you want to do that?' ; } return { delete_items_message: delete_items_message, - delete_nodes_message: delete_nodes_message, }; }); |
