summaryrefslogtreecommitdiff
path: root/src/client/view
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-06 16:12:09 +0200
committerAlon Levy <alon@pobox.com>2015-01-06 16:12:09 +0200
commit9e8618229939fb9097427f059ae57d95a610911a (patch)
tree37ed096f20c13b0cda779fd9f9106190e6fac5f0 /src/client/view
parent05b448607ddf1b87e0a90a43b11fd54ac4a0c0d4 (diff)
client: extract search to client/view/search.js
Diffstat (limited to 'src/client/view')
-rw-r--r--src/client/view/search.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/client/view/search.js b/src/client/view/search.js
new file mode 100644
index 00000000..4da81b4a
--- /dev/null
+++ b/src/client/view/search.js
@@ -0,0 +1,53 @@
+define(['view/completer', 'textanalysis', 'rz_core', 'view/selection'],
+function( completer, textanalysis, rz_core, selection)
+{
+var search,
+ search_completer;
+
+var focus = function() {
+ search.focus();
+}
+
+function init() {
+ search = $('#search');
+ search_completer = completer(search, $('#search-suggestion'),
+ {triggerStart:' ', triggerEnd:' '});
+
+ search_completer.options.plug(textanalysis.suggestions_options);
+ search.on('input', search_on_submit);
+ search.on('keydown', function(e) {
+ if (e.which == 13 && !search_completer.handleEnter()) {
+ e.preventDefault();
+ search_on_submit(e);
+ return false;
+ }
+ return undefined;
+ });
+
+ function search_on_submit() {
+ var text = search[0].value.trim(),
+ r;
+
+ try {
+ r = new RegExp(text.replace(/ /, '|'), 'i');
+ } catch (e) {
+ return; // don't clear selection either
+ }
+ if (text.length > 0) {
+ selection.byVisitors(function (n) { return n.name.match(r); });
+ } else {
+ selection.clear();
+ }
+ rz_core.update_view__graph(false);
+ };
+
+}
+
+
+
+return {
+ focus: focus,
+ init: init,
+};
+}
+);