From 4c56e301042189f5220543609130cef5c6a36bfa Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Fri, 10 Apr 2015 21:50:30 +0200 Subject: search: only complete on: click, completion, enter --- src/client/view/completer.js | 6 ++++++ src/client/view/search.js | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/client/view/completer.js b/src/client/view/completer.js index f113b556..f9cf4688 100644 --- a/src/client/view/completer.js +++ b/src/client/view/completer.js @@ -41,6 +41,7 @@ var completer = (function (input_element, dropdown, base_config) { dropdown_raw = dropdown[0], dropdown_visible = false, options_bus = new Bacon.Bus(), + completionsBus = new Bacon.Bus(), options = [], selected_index = -1, input_element_raw = input_element[0], @@ -208,6 +209,7 @@ var completer = (function (input_element, dropdown, base_config) { completions(string).forEach(function(name) { var suggestion = $('
' + name + '
'); suggestion.on('click', function(e) { + // TODO: move to handling element? _applySuggestion(name); input_element.focus(); }); @@ -272,6 +274,7 @@ var completer = (function (input_element, dropdown, base_config) { new_text = start + cur.slice(completion_end); setter(new_text, new_text.length); oninput('', 0); + completionsBus.push(str); } function handleEnter() { if (selected_index == -1) { @@ -282,7 +285,10 @@ var completer = (function (input_element, dropdown, base_config) { } return { + // input bus options: options_bus, + // output bus + completionsBus: completionsBus, oninput: oninput, next_option: next_option, prev_option: prev_option, diff --git a/src/client/view/search.js b/src/client/view/search.js index 39b84dd6..d11d8218 100644 --- a/src/client/view/search.js +++ b/src/client/view/search.js @@ -1,7 +1,9 @@ define(['consts', 'view/completer', 'textanalysis', 'rz_core', 'view/selection'], function(consts, completer, textanalysis, rz_core, selection) { -var search, +var search = $('#search'), + search_btn = $('#btn_search'), + search_completer_element = $('#search-suggestion'), search_completer; var focus = function() { @@ -9,8 +11,7 @@ var focus = function() { } function init() { - search = $('#search'); - search_completer = completer(search, $('#search-suggestion'), + search_completer = completer(search, search_completer_element, { triggerStart:' |', triggerEnd:' |', @@ -18,18 +19,17 @@ function init() { }); search_completer.options.plug(textanalysis.suggestions_options.map('.nodes')); - search.asEventStream('input') - .merge(search.asEventStream('keydown').filter( + search.asEventStream('keydown').filter( function(e) { - if (e.which == consts.VK_ENTER && !search_completer.handleEnter()) { + if (e.which === consts.VK_ENTER && search_completer.handleEnter()) { e.preventDefault(); - return false; } - return true; - })) + return (e.which === consts.VK_ENTER); + }) + .merge($('#btn_search').asEventStream('click')) + .merge(search_completer.completionsBus) .map(function () { return search[0].value.trim(); }) .skipDuplicates() - .debounce(300) .onValue(search_on_submit); function attribute_match(obj, regexp) { -- cgit v1.3.1