From 7696702a2a4a115608f4e65ca842bd24aa17eec2 Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 5 Aug 2022 19:15:28 +0200 Subject: [PATCH] launchbar WIP --- package-lock.json | 1 - src/public/app/entities/note_short.js | 6 ++++++ src/public/app/menus/shortcut_context_menu.js | 6 +++--- src/public/app/widgets/buttons/note_actions.js | 2 +- .../app/widgets/containers/shortcut_container.js | 16 ++++++++++++++++ src/public/app/widgets/note_tree.js | 2 +- .../widgets/ribbon_widgets/basic_properties.js | 6 +----- .../ribbon_widgets/inherited_attribute_list.js | 2 +- .../ribbon_widgets/owned_attribute_list.js | 2 +- src/services/special_notes.js | 12 ++++++++++++ 10 files changed, 42 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f7510a26..0c596e895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "trilium", "version": "0.54.1-beta", "hasInstallScript": true, "license": "AGPL-3.0-only", diff --git a/src/public/app/entities/note_short.js b/src/public/app/entities/note_short.js index 345857758..7523ae6a7 100644 --- a/src/public/app/entities/note_short.js +++ b/src/public/app/entities/note_short.js @@ -817,6 +817,12 @@ class NoteShort { isContentAvailable() { return !this.isProtected || protectedSessionHolder.isProtectedSessionAvailable() } + + isLaunchBarConfig() { + // launch bar config should be max 2 levels deep + return this.noteId.startsWith("lb_") + || this.getParentBranchIds().find(branchId => branchId.startsWith("lb_")); + } } export default NoteShort; diff --git a/src/public/app/menus/shortcut_context_menu.js b/src/public/app/menus/shortcut_context_menu.js index 09f51977d..8fc2f72dc 100644 --- a/src/public/app/menus/shortcut_context_menu.js +++ b/src/public/app/menus/shortcut_context_menu.js @@ -33,9 +33,9 @@ export default class ShortcutContextMenu { const isItem = isVisibleItem || isAvailableItem; return [ - (isVisibleRoot || isAvailableRoot) ? { title: 'Add note shortcut' } : null, - (isVisibleRoot || isAvailableRoot) ? { title: 'Add widget shortcut' } : null, - (isVisibleRoot || isAvailableRoot) ? { title: 'Add spacer' } : null, + (isVisibleRoot || isAvailableRoot) ? { title: 'Add note shortcut', command: 'addNoteShortcut' } : null, + (isVisibleRoot || isAvailableRoot) ? { title: 'Add widget shortcut', command: 'addWidgetShortcut' } : null, + (isVisibleRoot || isAvailableRoot) ? { title: 'Add spacer', command: 'addSpacerShortcut' } : null, { title: "----" }, { title: 'Delete ', command: "deleteNotes", uiIcon: "bx bx-trash", enabled: isItem }, diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js index fe486f299..b30b00e40 100644 --- a/src/public/app/widgets/buttons/note_actions.js +++ b/src/public/app/widgets/buttons/note_actions.js @@ -36,7 +36,7 @@ const TPL = ` export default class NoteActionsWidget extends NoteContextAwareWidget { isEnabled() { - return true; + return !this.note?.isLaunchBarConfig(); } doRender() { diff --git a/src/public/app/widgets/containers/shortcut_container.js b/src/public/app/widgets/containers/shortcut_container.js index fd7e12874..080c8a762 100644 --- a/src/public/app/widgets/containers/shortcut_container.js +++ b/src/public/app/widgets/containers/shortcut_container.js @@ -3,6 +3,10 @@ import froca from "../../services/froca.js"; import ButtonWidget from "../buttons/button_widget.js"; import CalendarWidget from "../buttons/calendar.js"; import appContext from "../../services/app_context.js"; +import SpacerWidget from "../spacer.js"; +import BookmarkButtons from "../bookmark_buttons.js"; +import ProtectedSessionStatusWidget from "../buttons/protected_session_status.js"; +import SyncStatusWidget from "../sync_status.js"; export default class ShortcutContainer extends FlexContainer { constructor() { @@ -37,6 +41,18 @@ export default class ShortcutContainer extends FlexContainer { if (builtinWidget) { if (builtinWidget === 'calendar') { this.child(new CalendarWidget(shortcut.title, shortcut.getIcon())); + } else if (builtinWidget === 'spacer') { + this.child(new SpacerWidget(40, 10)); + } else if (builtinWidget === 'pluginButtons') { + this.child(new FlexContainer("column") + .id("plugin-buttons") + .contentSized()); + } else if (builtinWidget === 'bookmarks') { + this.child(new BookmarkButtons()); + } else if (builtinWidget === 'protectedSession') { + this.child(new ProtectedSessionStatusWidget()); + } else if (builtinWidget === 'syncStatus') { + this.child(new SyncStatusWidget()); } else { console.log(`Unrecognized builtin widget ${builtinWidget} for shortcut ${shortcut.noteId} "${shortcut.title}"`); } diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 7e7d0e6f7..694709df5 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -506,7 +506,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { const note = await froca.getNote(node.data.noteId, true); - if (!note || note.isDeleted) { + if (!note || note.isDeleted || note.isLaunchBarConfig()) { return; } diff --git a/src/public/app/widgets/ribbon_widgets/basic_properties.js b/src/public/app/widgets/ribbon_widgets/basic_properties.js index ef2625b7f..00dec1015 100644 --- a/src/public/app/widgets/ribbon_widgets/basic_properties.js +++ b/src/public/app/widgets/ribbon_widgets/basic_properties.js @@ -68,13 +68,9 @@ export default class BasicPropertiesWidget extends NoteContextAwareWidget { return "toggleRibbonBasicProperties"; } - isEnabled() { - return this.note; - } - getTitle() { return { - show: this.isEnabled(), + show: !this.note.isLaunchBarConfig(), title: 'Basic Properties', icon: 'bx bx-slider' }; diff --git a/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js b/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js index 7e367a473..19263fdf4 100644 --- a/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js +++ b/src/public/app/widgets/ribbon_widgets/inherited_attribute_list.js @@ -43,7 +43,7 @@ export default class InheritedAttributesWidget extends NoteContextAwareWidget { getTitle() { return { - show: true, + show: !this.note.isLaunchBarConfig(), title: "Inherited attributes", icon: "bx bx-list-plus" }; diff --git a/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js b/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js index da8ed35ba..836d39a98 100644 --- a/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js +++ b/src/public/app/widgets/ribbon_widgets/owned_attribute_list.js @@ -47,7 +47,7 @@ export default class OwnedAttributeListWidget extends NoteContextAwareWidget { getTitle() { return { - show: true, + show: !this.note.isLaunchBarConfig(), title: "Owned attributes", icon: "bx bx-list-check" }; diff --git a/src/services/special_notes.js b/src/services/special_notes.js index 490a2552f..8b7adabe0 100644 --- a/src/services/special_notes.js +++ b/src/services/special_notes.js @@ -248,6 +248,8 @@ function getLaunchBarRoot() { content: '', parentNoteId: getHiddenRoot().noteId }).note; + + note.addLabel("iconClass", "bx bx-sidebar"); } return note; @@ -265,6 +267,8 @@ function getLaunchBarAvailableShortcutsRoot() { content: '', parentNoteId: getLaunchBarRoot().noteId }).note; + + note.addLabel("iconClass", "bx bx-hide"); } const branch = becca.getBranch('lb_availableshortcuts'); @@ -288,6 +292,8 @@ function getLaunchBarVisibleShortcutsRoot() { content: '', parentNoteId: getLaunchBarRoot().noteId }).note; + + note.addLabel("iconClass", "bx bx-show"); } const branch = becca.getBranch('lb_visibleshortcuts'); @@ -306,6 +312,12 @@ const shortcuts = [ { id: 'lb_notemap', targetNoteId: 'globalnotemap', title: 'Note map', icon: 'bx bx-map-alt', isVisible: true }, { id: 'lb_recentchanges', command: 'showRecentChanges', title: 'Recent changes', icon: 'bx bx-history', isVisible: false }, { id: 'lb_calendar', builtinWidget: 'calendar', title: 'Calendar', icon: 'bx bx-calendar', isVisible: true }, + { id: 'lb_spacer1', builtinWidget: 'spacer', title: 'Spacer', icon: 'bx bx-move-vertical', isVisible: true }, + { id: 'lb_pluginbuttons', builtinWidget: 'pluginButtons', title: 'Plugin buttons', icon: 'bx bx-move-vertical', isVisible: true }, + { id: 'lb_bookmarks', builtinWidget: 'bookmarks', title: 'Bookmarks', icon: 'bx bx-bookmark', isVisible: true }, + { id: 'lb_spacer2', builtinWidget: 'spacer', title: 'Spacer', icon: 'bx bx-move-vertical', isVisible: true }, + { id: 'lb_protectedsession', builtinWidget: 'protectedSession', title: 'Protected session', icon: 'bx bx bx-shield-quarter', isVisible: true }, + { id: 'lb_syncstatus', builtinWidget: 'syncStatus', title: 'Sync status', icon: 'bx bx-wifi', isVisible: true }, ]; function createMissingSpecialNotes() {