From a0f362457e56f06f63a158ad051a8ced7e535da4 Mon Sep 17 00:00:00 2001 From: azivner Date: Wed, 7 Nov 2018 09:51:14 +0100 Subject: [PATCH] refactoring of autocomplete handling, #203 --- .../javascripts/dialogs/jump_to_note.js | 41 +++++------------- .../javascripts/services/note_autocomplete.js | 42 ++++++++++++------- src/views/dialogs/jump_to_note.ejs | 4 -- 3 files changed, 38 insertions(+), 49 deletions(-) diff --git a/src/public/javascripts/dialogs/jump_to_note.js b/src/public/javascripts/dialogs/jump_to_note.js index 6dca4d272..68698163d 100644 --- a/src/public/javascripts/dialogs/jump_to_note.js +++ b/src/public/javascripts/dialogs/jump_to_note.js @@ -1,7 +1,6 @@ import treeService from '../services/tree.js'; import searchNotesService from '../services/search_notes.js'; -import noteautocompleteService from '../services/note_autocomplete.js'; -import linkService from "../services/link.js"; +import noteAutocompleteService from '../services/note_autocomplete.js'; const $dialog = $("#jump-to-note-dialog"); const $autoComplete = $("#jump-to-note-autocomplete"); @@ -17,33 +16,18 @@ async function showDialog() { $dialog.modal(); - $autoComplete.autocomplete({ - appendTo: document.querySelector('body'), - hint: false, - autoselect: true, - openOnFocus: true, - minLength: 0 - }, [ - { - source: noteautocompleteService.autocompleteSource, - displayKey: 'title', - templates: { - suggestion: function(suggestion) { - return suggestion.title; - } + noteAutocompleteService.initNoteAutocomplete($autoComplete) + .on('autocomplete:selected', function(event, suggestion, dataset) { + if (!suggestion.path) { + return false; } - } - ]).on('autocomplete:selected', function(event, suggestion, dataset) { - if (!suggestion.path) { - return false; - } - treeService.activateNote(suggestion.path); + treeService.activateNote(suggestion.path); - $dialog.modal('hide'); - }); + $dialog.modal('hide'); + }); - showRecentNotes(); + noteAutocompleteService.showRecentNotes($autoComplete); } function showInFullText(e) { @@ -60,14 +44,11 @@ function showInFullText(e) { $dialog.modal('hide'); } -function showRecentNotes() { - $autoComplete.autocomplete("val", ""); - $autoComplete.autocomplete("open"); -} + $showInFullTextButton.click(showInFullText); -$showRecentNotesButton.click(showRecentNotes); +$showRecentNotesButton.click(noteAutocompleteService.showRecentNotes); $dialog.bind('keydown', 'ctrl+return', showInFullText); diff --git a/src/public/javascripts/services/note_autocomplete.js b/src/public/javascripts/services/note_autocomplete.js index c9d9b6188..9ec1a541f 100644 --- a/src/public/javascripts/services/note_autocomplete.js +++ b/src/public/javascripts/services/note_autocomplete.js @@ -16,8 +16,13 @@ async function autocompleteSource(term, cb) { cb(result); } -async function initNoteAutocomplete($el) { - if (!$el.hasClass("ui-autocomplete-input")) { +function showRecentNotes($el) { + $el.autocomplete("val", ""); + $el.autocomplete("open"); +} + +function initNoteAutocomplete($el) { + if (!$el.hasClass("aa-input")) { const $showRecentNotesButton = $("
").addClass("input-group-append").append( $("") .addClass("input-group-text show-recent-notes-button") @@ -25,22 +30,28 @@ async function initNoteAutocomplete($el) { $el.after($showRecentNotesButton); - $showRecentNotesButton.click(() => $el.autocomplete("search", "")); + $showRecentNotesButton.click(() => showRecentNotes($el)); - await $el.autocomplete({ - appendTo: $el.parent().parent(), - source: autocompleteSource, - minLength: 0, - change: function (event, ui) { - $el.trigger("change"); - }, - select: function (event, ui) { - if (ui.item.value === 'No results') { - return false; + $el.autocomplete({ + appendTo: document.querySelector('body'), + hint: false, + autoselect: true, + openOnFocus: true, + minLength: 0 + }, [ + { + source: autocompleteSource, + displayKey: 'title', + templates: { + suggestion: function(suggestion) { + return suggestion.title; + } } } - }); + ]); } + + return $el; } ko.bindingHandlers.noteAutocomplete = { @@ -51,5 +62,6 @@ ko.bindingHandlers.noteAutocomplete = { export default { initNoteAutocomplete, - autocompleteSource + autocompleteSource, + showRecentNotes } \ No newline at end of file diff --git a/src/views/dialogs/jump_to_note.ejs b/src/views/dialogs/jump_to_note.ejs index 378ea0125..62bff6ba7 100644 --- a/src/views/dialogs/jump_to_note.ejs +++ b/src/views/dialogs/jump_to_note.ejs @@ -12,10 +12,6 @@
- -
- -