From 7df8c940b6f772372713e0bdedf779644e0b05f8 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 8 Mar 2021 00:04:43 +0100 Subject: [PATCH] have paths in "note paths" widget also sorted by priority --- src/public/app/entities/note_short.js | 24 ++++++++++++++++++++++++ src/public/app/services/tree.js | 19 +------------------ src/public/app/widgets/note_paths.js | 20 ++++++++++---------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/public/app/entities/note_short.js b/src/public/app/entities/note_short.js index a7b031334..6b7a4b40d 100644 --- a/src/public/app/entities/note_short.js +++ b/src/public/app/entities/note_short.js @@ -2,6 +2,7 @@ import server from '../services/server.js'; import noteAttributeCache from "../services/note_attribute_cache.js"; import ws from "../services/ws.js"; import options from "../services/options.js"; +import treeCache from "../services/tree_cache.js"; const LABEL = 'label'; const RELATION = 'relation'; @@ -279,6 +280,29 @@ class NoteShort { return paths; } + getSortedNotePaths(hoistedNotePath = 'root') { + const notePaths = this.getAllNotePaths().map(path => ({ + notePath: path, + isInHoistedSubTree: path.includes(hoistedNotePath), + isArchived: path.find(noteId => treeCache.notes[noteId].hasLabel('archived')), + isSearch: path.find(noteId => treeCache.notes[noteId].type === 'search') + })); + + notePaths.sort((a, b) => { + if (a.isInHoistedSubTree !== b.isInHoistedSubTree) { + return a.isInHoistedSubTree ? -1 : 1; + } else if (a.isSearch !== b.isSearch) { + return a.isSearch ? 1 : -1; + } else if (a.isArchived !== b.isArchived) { + return a.isArchived ? 1 : -1; + } else { + return a.notePath.length - b.notePath.length; + } + }); + + return notePaths.map(rec => rec.notePath); + } + __filterAttrs(attributes, type, name) { if (!type && !name) { return attributes; diff --git a/src/public/app/services/tree.js b/src/public/app/services/tree.js index 83b3a3cbb..ee4b5bb83 100644 --- a/src/public/app/services/tree.js +++ b/src/public/app/services/tree.js @@ -99,24 +99,7 @@ async function resolveNotePathToSegments(notePath, hoistedNoteId = 'root', logEr function getSomeNotePathSegments(note, hoistedNotePath = 'root') { utils.assertArguments(note); - const notePaths = note.getAllNotePaths().map(path => ({ - notePath: path, - isInHoistedSubTree: path.includes(hoistedNotePath), - isArchived: path.find(noteId => treeCache.notes[noteId].hasLabel('archived')), - isSearch: path.find(noteId => treeCache.notes[noteId].type === 'search') - })); - - notePaths.sort((a, b) => { - if (a.isInHoistedSubTree !== b.isInHoistedSubTree) { - return a.isInHoistedSubTree ? -1 : 1; - } else if (a.isSearch !== b.isSearch) { - return a.isSearch ? 1 : -1; - } else if (a.isArchived !== b.isArchived) { - return a.isArchived ? 1 : -1; - } else { - return a.notePath.length - b.notePath.length; - } - }); + const notePaths = note.getSortedNotePaths(hoistedNotePath); return notePaths[0].notePath; } diff --git a/src/public/app/widgets/note_paths.js b/src/public/app/widgets/note_paths.js index a43a1df5f..d578455c9 100644 --- a/src/public/app/widgets/note_paths.js +++ b/src/public/app/widgets/note_paths.js @@ -47,16 +47,10 @@ export default class NotePathsWidget extends TabAwareWidget { return; } - const pathSegments = treeService.parseNotePath(this.notePath); - const activeNoteParentNoteId = pathSegments[pathSegments.length - 2]; // we know this is not root so there must be a parent - - for (const parentNote of this.note.getParentNotes()) { - const parentNotePath = treeService.getSomeNotePath(parentNote); - // this is to avoid having root notes leading '/' - const notePath = parentNotePath ? (parentNotePath + '/' + this.noteId) : this.noteId; - const isCurrent = activeNoteParentNoteId === parentNote.noteId; - - await this.addPath(notePath, isCurrent); + for (const notePath of this.note.getSortedNotePaths(this.hoistedNoteId)) { + const notePathStr = notePath.join('/'); +console.log(notePathStr, this.notePath, notePathStr === this.notePath); + await this.addPath(notePathStr, notePathStr === this.notePath); } const cloneLink = $("
") @@ -96,4 +90,10 @@ export default class NotePathsWidget extends TabAwareWidget { this.refresh(); } } + + async refresh() { + await super.refresh(); + + this.$widget.find('.dropdown-toggle').dropdown('hide'); + } }