From c8ec86e5379fd0cdd481a40137e5380b066d87ba Mon Sep 17 00:00:00 2001 From: azivner Date: Tue, 8 Jan 2019 23:32:03 +0100 Subject: [PATCH] allow refreshing saved note, closes #304 --- .../javascripts/services/note_detail_search.js | 4 ++++ src/public/javascripts/services/tree.js | 12 +++++++++++- src/public/javascripts/services/tree_builder.js | 2 +- src/views/details/search.ejs | 7 ++++++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/public/javascripts/services/note_detail_search.js b/src/public/javascripts/services/note_detail_search.js index 6e347cffc..9a4d8c8f6 100644 --- a/src/public/javascripts/services/note_detail_search.js +++ b/src/public/javascripts/services/note_detail_search.js @@ -1,7 +1,9 @@ import noteDetailService from "./note_detail.js"; +import treeService from "./tree.js"; const $searchString = $("#search-string"); const $component = $('#note-detail-search'); +const $refreshButton = $('#note-detail-search-refresh-results-button'); function getContent() { return JSON.stringify({ @@ -25,6 +27,8 @@ function show() { $searchString.on('input', noteDetailService.noteChanged); } +$refreshButton.click(() => treeService.reload()); + export default { getContent, show, diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index 8be2a0b9c..2245996a5 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -352,6 +352,7 @@ function clearSelectedNodes() { } async function treeInitialized() { + // - is used in mobile to indicate that we don't want to activate any note after load if (startNotePath === '-') { return; } @@ -363,7 +364,6 @@ async function treeInitialized() { startNotePath = null; } - // - is used in mobile to indicate that we don't want to activate any note after load if (startNotePath) { const node = await activateNote(startNotePath); @@ -438,6 +438,16 @@ function initFancyTree(tree) { $span.append(unhoistButton); } + }, + // this is done to automatically lazy load all expanded search notes after tree load + loadChildren: function(event, data) { + data.node.visit(function(subNode){ + // Load all lazy/unloaded child nodes + // (which will trigger `loadChildren` recursively) + if( subNode.isUndefined() && subNode.isExpanded() ) { + subNode.load(); + } + }); } }); diff --git a/src/public/javascripts/services/tree_builder.js b/src/public/javascripts/services/tree_builder.js index 2fc6a2c2e..cee322481 100644 --- a/src/public/javascripts/services/tree_builder.js +++ b/src/public/javascripts/services/tree_builder.js @@ -86,7 +86,7 @@ async function prepareNode(branch) { extraClasses: await getExtraClasses(note), icon: await getIcon(note), refKey: note.noteId, - expanded: (note.type !== 'search' && branch.isExpanded) || hoistedNoteId === note.noteId + expanded: branch.isExpanded || hoistedNoteId === note.noteId }; if (note.hasChildren() || note.type === 'search') { diff --git a/src/views/details/search.ejs b/src/views/details/search.ejs index a741a0c99..2fa424990 100644 --- a/src/views/details/search.ejs +++ b/src/views/details/search.ejs @@ -1,7 +1,12 @@