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 = {