diff --git a/src/public/app/widgets/ribbon_widgets/note_paths.js b/src/public/app/widgets/ribbon_widgets/note_paths.js index fd7a1c906..225cbef69 100644 --- a/src/public/app/widgets/ribbon_widgets/note_paths.js +++ b/src/public/app/widgets/ribbon_widgets/note_paths.js @@ -69,7 +69,10 @@ export default class NotePathsWidget extends NoteContextAwareWidget { this.$notePathList.empty(); if (this.noteId === 'root') { - await this.getRenderedPath('root'); + this.$notePathList.empty().append( + await this.getRenderedPath('root') + ); + return; } @@ -94,7 +97,7 @@ export default class NotePathsWidget extends NoteContextAwareWidget { this.$notePathList.empty().append(...renderedPaths); } - async getRenderedPath(notePath, notePathRecord) { + async getRenderedPath(notePath, notePathRecord = null) { const title = await treeService.getNotePathTitle(notePath); const $noteLink = await linkService.createNoteLink(notePath, {title}); @@ -109,20 +112,20 @@ export default class NotePathsWidget extends NoteContextAwareWidget { $noteLink.addClass("path-current"); } - if (notePathRecord.isInHoistedSubTree) { + if (!notePathRecord || notePathRecord.isInHoistedSubTree) { $noteLink.addClass("path-in-hoisted-subtree"); } else { icons.push(``); } - if (notePathRecord.isArchived) { + if (notePathRecord?.isArchived) { $noteLink.addClass("path-archived"); icons.push(``); } - if (notePathRecord.isSearch) { + if (notePathRecord?.isSearch) { $noteLink.addClass("path-search"); icons.push(``); diff --git a/src/routes/api/note_map.js b/src/routes/api/note_map.js index dc9a99b8d..4455aebe7 100644 --- a/src/routes/api/note_map.js +++ b/src/routes/api/note_map.js @@ -43,6 +43,11 @@ function getNeighbors(note, depth) { } const targetNote = relation.getTargetNote(); + + if (targetNote.hasLabel('excludeFromNoteMap')) { + continue; + } + retNoteIds.push(targetNote.noteId); for (const noteId of getNeighbors(targetNote, depth - 1)) { @@ -57,6 +62,11 @@ function getNeighbors(note, depth) { } const sourceNote = relation.getNote(); + + if (sourceNote.hasLabel('excludeFromNoteMap')) { + continue; + } + retNoteIds.push(sourceNote.noteId); for (const noteId of getNeighbors(sourceNote, depth - 1)) { diff --git a/src/services/special_notes.js b/src/services/special_notes.js index 46627e0da..9c27f7f14 100644 --- a/src/services/special_notes.js +++ b/src/services/special_notes.js @@ -44,6 +44,7 @@ function getHiddenRoot() { // isInheritable: false means that this notePath is automatically not preffered but at the same time // the flag is not inherited to the children hidden.addLabel('archived', "", false); + hidden.addLabel('excludeFromNoteMap', "", true); } return hidden; @@ -206,6 +207,12 @@ function createMissingSpecialNotes() { getSinglesNoteRoot(); getSinglesNoteRoot(); getGlobalNoteMap(); + + const hidden = getHiddenRoot(); + + if (!hidden.hasOwnedLabel('excludeFromNoteMap')) { + hidden.addLabel('excludeFromNoteMap', "", true); + } } module.exports = {