From bd913a63a87f9345de54b97b6061a0d3a2968ee9 Mon Sep 17 00:00:00 2001 From: azivner Date: Mon, 4 Jun 2018 23:21:45 -0400 Subject: [PATCH] search note fixes --- src/public/images/icons/save.png | Bin 0 -> 388 bytes src/public/javascripts/services/context_menu.js | 3 ++- src/public/javascripts/services/tree_builder.js | 8 ++++---- src/services/note_cache.js | 14 +++++++++++--- src/views/index.ejs | 11 ++++++++--- 5 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 src/public/images/icons/save.png diff --git a/src/public/images/icons/save.png b/src/public/images/icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd62aaf2e5ae1b57a4e810a9cba4fc2f1fe1008 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 zP{(x;W^~e+T>%tiFY)wsWq-uR%Ag>!V8+uF1_nk!PZ!4!i_=H1D0;I53b22eUz8vy zawa^4<#M92Bu^a^|76F%Tuq+Mkp|stv**Y=Y>2q36rrav{S13nXvFE3R_1^wU8?6iBwHZgvI#KFGR9#Wl~Z0|e}y1wIh=Ce<= zGHvxCq8lW)Z%d9{5d7KHxMEGvtrJg#mKnx>{KuVt<3O&)+(V91SM)Uh$W7S4m22ti zm4}SBT|D)s_L1fv{y8q^p15~Z*|NQq9de|4xDpa g{q;jrdVQ<>7QG0+`Ma7lf#JpA>FVdQ&MBb@0Fh;*1poj5 literal 0 HcmV?d00001 diff --git a/src/public/javascripts/services/context_menu.js b/src/public/javascripts/services/context_menu.js index 2c19561c4..29a5fd500 100644 --- a/src/public/javascripts/services/context_menu.js +++ b/src/public/javascripts/services/context_menu.js @@ -114,13 +114,14 @@ const contextMenuOptions = { // Modify menu entries depending on node status $tree.contextmenu("enableEntry", "insertNoteHere", isNotRoot && parentNote.type !== 'search'); $tree.contextmenu("enableEntry", "insertChildNote", note.type !== 'search'); - $tree.contextmenu("enableEntry", "delete", isNotRoot); + $tree.contextmenu("enableEntry", "delete", isNotRoot && parentNote.type !== 'search'); $tree.contextmenu("enableEntry", "copy", isNotRoot); $tree.contextmenu("enableEntry", "cut", isNotRoot); $tree.contextmenu("enableEntry", "pasteAfter", clipboardIds.length > 0 && isNotRoot && parentNote.type !== 'search'); $tree.contextmenu("enableEntry", "pasteInto", clipboardIds.length > 0 && note.type !== 'search'); $tree.contextmenu("enableEntry", "importBranch", note.type !== 'search'); $tree.contextmenu("enableEntry", "exportBranch", note.type !== 'search'); + $tree.contextmenu("enableEntry", "editBranchPrefix", parentNote.type !== 'search'); // Activate node on right-click node.setActive(); diff --git a/src/public/javascripts/services/tree_builder.js b/src/public/javascripts/services/tree_builder.js index 68dede509..813233c5c 100644 --- a/src/public/javascripts/services/tree_builder.js +++ b/src/public/javascripts/services/tree_builder.js @@ -74,14 +74,14 @@ async function prepareRealBranch(parentNote) { async function prepareSearchBranch(note) { const fullNote = await noteDetailService.loadNote(note.noteId); - const noteIds = await server.get('search/' + encodeURIComponent(fullNote.jsonContent.searchString)); + const results = await server.get('search/' + encodeURIComponent(fullNote.jsonContent.searchString)); - for (const noteId of noteIds) { + for (const result of results) { const branch = new Branch(treeCache, { branchId: "virt" + utils.randomString(10), - noteId: noteId, + noteId: result.noteId, parentNoteId: note.noteId, - prefix: '', + prefix: result.prefix, virtual: true }); diff --git a/src/services/note_cache.js b/src/services/note_cache.js index 687376260..cf284c796 100644 --- a/src/services/note_cache.js +++ b/src/services/note_cache.js @@ -8,6 +8,7 @@ const utils = require('./utils'); let noteTitles; let protectedNoteTitles; let noteIds; +let childParentToBranchId = {}; const childToParent = {}; const hideInAutocomplete = {}; @@ -20,11 +21,12 @@ async function load() { prefixes = await sql.getMap(`SELECT noteId || '-' || parentNoteId, prefix FROM branches WHERE prefix IS NOT NULL AND prefix != ''`); - const relations = await sql.getRows(`SELECT noteId, parentNoteId FROM branches WHERE isDeleted = 0`); + const relations = await sql.getRows(`SELECT branchId, noteId, parentNoteId FROM branches WHERE isDeleted = 0`); for (const rel of relations) { childToParent[rel.noteId] = childToParent[rel.noteId] || []; childToParent[rel.noteId].push(rel.parentNoteId); + childParentToBranchId[`${rel.noteId}-${rel.parentNoteId}`] = rel.branchId; } const hiddenLabels = await sql.getColumn(`SELECT noteId FROM labels WHERE isDeleted = 0 AND name = 'hideInAutocomplete'`); @@ -91,11 +93,15 @@ function search(noteId, tokens, path, results) { if (retPath) { const noteTitle = getNoteTitleForPath(retPath); + const thisNoteId = retPath[retPath.length - 1]; + const thisParentNoteId = retPath[retPath.length - 2]; results.push({ - noteId: noteId, + noteId: thisNoteId, + branchId: childParentToBranchId[`${thisNoteId}-${thisParentNoteId}`], title: noteTitle, - path: retPath.join('/') + path: retPath.join('/'), + prefix: prefixes[`${thisNoteId}-${thisParentNoteId}`] }); } @@ -230,6 +236,7 @@ eventService.subscribe(eventService.ENTITY_CHANGED, async ({entityName, entityId if (branch.isDeleted) { delete prefixes[branch.noteId + '-' + branch.parentNoteId]; + delete childParentToBranchId[branch.noteId + '-' + branch.parentNoteId]; } else { if (branch.prefix) { @@ -238,6 +245,7 @@ eventService.subscribe(eventService.ENTITY_CHANGED, async ({entityName, entityId childToParent[branch.noteId] = childToParent[branch.noteId] || []; childToParent[branch.noteId].push(branch.parentNoteId); + childParentToBranchId[branch.noteId + '-' + branch.parentNoteId] = branch.branchId; } } else if (entityName === 'labels') { diff --git a/src/views/index.ejs b/src/views/index.ejs index 1830ae650..8ca85ea7b 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -77,7 +77,12 @@
- + +   + +
@@ -115,10 +120,10 @@