From 8d608c3c1c311504fbca0f05a71d82b1ce8e0749 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 6 Aug 2022 23:49:25 +0200 Subject: [PATCH] launchbar WIP --- src/public/app/doc_notes/launchbar_intro.html | 11 ++ src/public/app/layouts/desktop_layout.js | 143 +++++++----------- .../widgets/buttons/note_revisions_button.js | 16 ++ src/public/app/widgets/type_widgets/doc.js | 21 ++- src/services/special_notes.js | 3 + 5 files changed, 104 insertions(+), 90 deletions(-) create mode 100644 src/public/app/doc_notes/launchbar_intro.html create mode 100644 src/public/app/widgets/buttons/note_revisions_button.js diff --git a/src/public/app/doc_notes/launchbar_intro.html b/src/public/app/doc_notes/launchbar_intro.html new file mode 100644 index 000000000..1281f6fc8 --- /dev/null +++ b/src/public/app/doc_notes/launchbar_intro.html @@ -0,0 +1,11 @@ +

Welcome to the Launchbar configuration.

+ +

You can do the following things here:

+ + \ No newline at end of file diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 5cab44cf4..1f16b97c9 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -20,14 +20,12 @@ import ImagePropertiesWidget from "../widgets/ribbon_widgets/image_properties.js import NotePropertiesWidget from "../widgets/ribbon_widgets/note_properties.js"; import NoteIconWidget from "../widgets/note_icon.js"; import SearchResultWidget from "../widgets/search_result.js"; -import SyncStatusWidget from "../widgets/sync_status.js"; import ScrollingContainer from "../widgets/containers/scrolling_container.js"; import RootContainer from "../widgets/containers/root_container.js"; import NoteUpdateStatusWidget from "../widgets/note_update_status.js"; import SpacerWidget from "../widgets/spacer.js"; import QuickSearchWidget from "../widgets/quick_search.js"; import ButtonWidget from "../widgets/buttons/button_widget.js"; -import ProtectedSessionStatusWidget from "../widgets/buttons/protected_session_status.js"; import SplitNoteContainer from "../widgets/containers/split_note_container.js"; import LeftPaneToggleWidget from "../widgets/buttons/left_pane_toggle.js"; import CreatePaneButton from "../widgets/buttons/create_pane_button.js"; @@ -40,11 +38,8 @@ import NotePathsWidget from "../widgets/ribbon_widgets/note_paths.js"; import SimilarNotesWidget from "../widgets/ribbon_widgets/similar_notes.js"; import RightPaneContainer from "../widgets/containers/right_pane_container.js"; import EditButton from "../widgets/buttons/edit_button.js"; -import CalendarWidget from "../widgets/buttons/calendar.js"; import EditedNotesWidget from "../widgets/ribbon_widgets/edited_notes.js"; -import OpenNoteButtonWidget from "../widgets/buttons/open_note_button_widget.js"; import MermaidWidget from "../widgets/mermaid.js"; -import BookmarkButtons from "../widgets/bookmark_buttons.js"; import NoteWrapperWidget from "../widgets/note_wrapper.js"; import BacklinksWidget from "../widgets/floating_buttons/zpetne_odkazy.js"; import SharedInfoWidget from "../widgets/shared_info.js"; @@ -79,6 +74,7 @@ import FloatingButtons from "../widgets/floating_buttons/floating_buttons.js"; import RelationMapButtons from "../widgets/floating_buttons/relation_map_buttons.js"; import MermaidExportButton from "../widgets/floating_buttons/mermaid_export_button.js"; import ShortcutContainer from "../widgets/containers/shortcut_container.js"; +import NoteRevisionsButton from "../widgets/buttons/note_revisions_button.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -95,33 +91,6 @@ export default class DesktopLayout { .css("width", "53px") .child(new GlobalMenuWidget()) .child(new ShortcutContainer()) - // .child(new ButtonWidget() - // .icon("bx-file-blank") - // .title("New note") - // .command("createNoteIntoInbox")) - // .child(new ButtonWidget() - // .icon("bx-search") - // .title("Search") - // .command("searchNotes")) - // .child(new ButtonWidget() - // .icon("bx-send") - // .title("Jump to note") - // .command("jumpToNote")) - // .child(new OpenNoteButtonWidget() - // .targetNote('globalnotemap')) - // .child(new ButtonWidget() - // .icon("bx-history") - // .title("Show recent changes") - // .command("showRecentChanges")) - // .child(new CalendarWidget()) - // .child(new SpacerWidget(40, 0)) - // .child(new FlexContainer("column") - // .id("plugin-buttons") - // .contentSized()) - // .child(new BookmarkButtons()) - // .child(new SpacerWidget(0, 1000)) - // .child(new ProtectedSessionStatusWidget()) - // .child(new SyncStatusWidget()) .child(new LeftPaneToggleWidget()) ) .child(new LeftPaneContainer() @@ -145,63 +114,59 @@ export default class DesktopLayout { .collapsible() .id('center-pane') .child(new SplitNoteContainer(() => - new NoteWrapperWidget() - .child(new FlexContainer('row').class('title-row') - .css("height", "50px") - .css('align-items', "center") - .cssBlock('.title-row > * { margin: 5px; }') - .child(new NoteIconWidget()) - .child(new NoteTitleWidget()) - .child(new SpacerWidget(0, 1)) - .child(new ClosePaneButton()) - .child(new CreatePaneButton()) - ) - .child( - new RibbonContainer() - .ribbon(new SearchDefinitionWidget()) - .ribbon(new EditedNotesWidget()) - .ribbon(new BookPropertiesWidget()) - .ribbon(new NotePropertiesWidget()) - .ribbon(new FilePropertiesWidget()) - .ribbon(new ImagePropertiesWidget()) - .ribbon(new PromotedAttributesWidget()) - .ribbon(new BasicPropertiesWidget()) - .ribbon(new OwnedAttributeListWidget()) - .ribbon(new InheritedAttributesWidget()) - .ribbon(new NotePathsWidget()) - .ribbon(new NoteMapRibbonWidget()) - .ribbon(new SimilarNotesWidget()) - .ribbon(new NoteInfoWidget()) - .button(new EditButton()) - .button(new ButtonWidget() - .icon('bx-history') - .title("Note Revisions") - .command("showNoteRevisions") - .titlePlacement("bottom")) - .button(new NoteActionsWidget()) - ) - .child(new SharedInfoWidget()) - .child(new NoteUpdateStatusWidget()) - .child(new FloatingButtons() - .child(new RelationMapButtons()) - .child(new MermaidExportButton()) - .child(new BacklinksWidget()) - ) - .child(new MermaidWidget()) - .child( - new ScrollingContainer() - .filling() - .child(new SqlTableSchemasWidget()) - .child(new NoteDetailWidget()) - .child(new NoteListWidget()) - .child(new SearchResultWidget()) - .child(new SqlResultWidget()) - ) - .child(new FindWidget()) - .child( - ...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC - ...this.customWidgets.get('note-detail-pane') - ) + new NoteWrapperWidget() + .child(new FlexContainer('row').class('title-row') + .css("height", "50px") + .css('align-items', "center") + .cssBlock('.title-row > * { margin: 5px; }') + .child(new NoteIconWidget()) + .child(new NoteTitleWidget()) + .child(new SpacerWidget(0, 1)) + .child(new ClosePaneButton()) + .child(new CreatePaneButton()) + ) + .child( + new RibbonContainer() + .ribbon(new SearchDefinitionWidget()) + .ribbon(new EditedNotesWidget()) + .ribbon(new BookPropertiesWidget()) + .ribbon(new NotePropertiesWidget()) + .ribbon(new FilePropertiesWidget()) + .ribbon(new ImagePropertiesWidget()) + .ribbon(new PromotedAttributesWidget()) + .ribbon(new BasicPropertiesWidget()) + .ribbon(new OwnedAttributeListWidget()) + .ribbon(new InheritedAttributesWidget()) + .ribbon(new NotePathsWidget()) + .ribbon(new NoteMapRibbonWidget()) + .ribbon(new SimilarNotesWidget()) + .ribbon(new NoteInfoWidget()) + .button(new EditButton()) + .button(new NoteRevisionsButton()) + .button(new NoteActionsWidget()) + ) + .child(new SharedInfoWidget()) + .child(new NoteUpdateStatusWidget()) + .child(new FloatingButtons() + .child(new RelationMapButtons()) + .child(new MermaidExportButton()) + .child(new BacklinksWidget()) + ) + .child(new MermaidWidget()) + .child( + new ScrollingContainer() + .filling() + .child(new SqlTableSchemasWidget()) + .child(new NoteDetailWidget()) + .child(new NoteListWidget()) + .child(new SearchResultWidget()) + .child(new SqlResultWidget()) + ) + .child(new FindWidget()) + .child( + ...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC + ...this.customWidgets.get('note-detail-pane') + ) ) ) .child(...this.customWidgets.get('center-pane')) diff --git a/src/public/app/widgets/buttons/note_revisions_button.js b/src/public/app/widgets/buttons/note_revisions_button.js new file mode 100644 index 000000000..a8bb1945f --- /dev/null +++ b/src/public/app/widgets/buttons/note_revisions_button.js @@ -0,0 +1,16 @@ +import ButtonWidget from "./button_widget.js"; + +export default class NoteRevisionsButton extends ButtonWidget { + constructor() { + super(); + + this.icon('bx-history') + .title("Note Revisions") + .command("showNoteRevisions") + .titlePlacement("bottom"); + } + + isEnabled() { + return super.isEnabled() && this.note?.type !== 'shortcut'; + } +} \ No newline at end of file diff --git a/src/public/app/widgets/type_widgets/doc.js b/src/public/app/widgets/type_widgets/doc.js index 9410c443f..a7a692b13 100644 --- a/src/public/app/widgets/type_widgets/doc.js +++ b/src/public/app/widgets/type_widgets/doc.js @@ -1,13 +1,32 @@ import TypeWidget from "./type_widget.js"; -const TPL = `
Z
`; +const TPL = `
+ + +
+
`; export default class DocTypeWidget extends TypeWidget { static getType() { return "doc"; } doRender() { this.$widget = $(TPL); + this.$content = this.$widget.find('.note-detail-doc-content'); super.doRender(); } + + async doRefresh(note) { + const docName = note.getLabelValue('docName'); + + if (docName) { + this.$content.load(`app/doc_notes/${docName}.html`); + } else { + this.$content.empty(); + } + } } diff --git a/src/services/special_notes.js b/src/services/special_notes.js index e9cb68c1f..0b7922d23 100644 --- a/src/services/special_notes.js +++ b/src/services/special_notes.js @@ -250,6 +250,7 @@ function getLaunchBarRoot() { }).note; note.addLabel("iconClass", "bx bx-sidebar"); + note.addLabel("docName", "launchbar_intro"); } return note; @@ -269,6 +270,7 @@ function getLaunchBarAvailableShortcutsRoot() { }).note; note.addLabel("iconClass", "bx bx-hide"); + note.addLabel("docName", "launchbar_intro"); } const branch = becca.getBranch('lb_availableshortcuts'); @@ -294,6 +296,7 @@ function getLaunchBarVisibleShortcutsRoot() { }).note; note.addLabel("iconClass", "bx bx-show"); + note.addLabel("docName", "launchbar_intro"); } const branch = becca.getBranch('lb_visibleshortcuts');