summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/view/completer.js6
-rw-r--r--src/client/view/search.js20
2 files changed, 16 insertions, 10 deletions
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 = $('<div class="suggestion-item">' + name + '</div>');
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) {