diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-06 16:12:09 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-06 16:12:09 +0200 |
| commit | 9e8618229939fb9097427f059ae57d95a610911a (patch) | |
| tree | 37ed096f20c13b0cda779fd9f9106190e6fac5f0 /src/client/view | |
| parent | 05b448607ddf1b87e0a90a43b11fd54ac4a0c0d4 (diff) | |
client: extract search to client/view/search.js
Diffstat (limited to 'src/client/view')
| -rw-r--r-- | src/client/view/search.js | 53 |
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, +}; +} +); |
