launchbar WIP

This commit is contained in:
zadam 2022-08-06 23:49:25 +02:00
parent 08aa65bddb
commit 8d608c3c1c
5 changed files with 104 additions and 90 deletions

View File

@ -0,0 +1,11 @@
<p>Welcome to the Launchbar configuration.</p>
<p>You can do the following things here:</p>
<ul>
<li>Move available shortcuts to the visible list (thus putting them into the launchbar) by dragging them</li>
<li>Move visible shortcuts to the available list (thus hiding them from the launchbar) by dragging them</li>
<li>You can reorder the items in the lists by dragging</li>
<li>You can create new shortcuts by right-clicking on the "Visible shortcuts" folder</li>
<li>If you want to get back to the default setup, just delete the "Visible shortcuts" and "Available shortcuts", the default configuration will be re-created.</li>
</ul>

View File

@ -20,14 +20,12 @@ import ImagePropertiesWidget from "../widgets/ribbon_widgets/image_properties.js
import NotePropertiesWidget from "../widgets/ribbon_widgets/note_properties.js"; import NotePropertiesWidget from "../widgets/ribbon_widgets/note_properties.js";
import NoteIconWidget from "../widgets/note_icon.js"; import NoteIconWidget from "../widgets/note_icon.js";
import SearchResultWidget from "../widgets/search_result.js"; import SearchResultWidget from "../widgets/search_result.js";
import SyncStatusWidget from "../widgets/sync_status.js";
import ScrollingContainer from "../widgets/containers/scrolling_container.js"; import ScrollingContainer from "../widgets/containers/scrolling_container.js";
import RootContainer from "../widgets/containers/root_container.js"; import RootContainer from "../widgets/containers/root_container.js";
import NoteUpdateStatusWidget from "../widgets/note_update_status.js"; import NoteUpdateStatusWidget from "../widgets/note_update_status.js";
import SpacerWidget from "../widgets/spacer.js"; import SpacerWidget from "../widgets/spacer.js";
import QuickSearchWidget from "../widgets/quick_search.js"; import QuickSearchWidget from "../widgets/quick_search.js";
import ButtonWidget from "../widgets/buttons/button_widget.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 SplitNoteContainer from "../widgets/containers/split_note_container.js";
import LeftPaneToggleWidget from "../widgets/buttons/left_pane_toggle.js"; import LeftPaneToggleWidget from "../widgets/buttons/left_pane_toggle.js";
import CreatePaneButton from "../widgets/buttons/create_pane_button.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 SimilarNotesWidget from "../widgets/ribbon_widgets/similar_notes.js";
import RightPaneContainer from "../widgets/containers/right_pane_container.js"; import RightPaneContainer from "../widgets/containers/right_pane_container.js";
import EditButton from "../widgets/buttons/edit_button.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 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 MermaidWidget from "../widgets/mermaid.js";
import BookmarkButtons from "../widgets/bookmark_buttons.js";
import NoteWrapperWidget from "../widgets/note_wrapper.js"; import NoteWrapperWidget from "../widgets/note_wrapper.js";
import BacklinksWidget from "../widgets/floating_buttons/zpetne_odkazy.js"; import BacklinksWidget from "../widgets/floating_buttons/zpetne_odkazy.js";
import SharedInfoWidget from "../widgets/shared_info.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 RelationMapButtons from "../widgets/floating_buttons/relation_map_buttons.js";
import MermaidExportButton from "../widgets/floating_buttons/mermaid_export_button.js"; import MermaidExportButton from "../widgets/floating_buttons/mermaid_export_button.js";
import ShortcutContainer from "../widgets/containers/shortcut_container.js"; import ShortcutContainer from "../widgets/containers/shortcut_container.js";
import NoteRevisionsButton from "../widgets/buttons/note_revisions_button.js";
export default class DesktopLayout { export default class DesktopLayout {
constructor(customWidgets) { constructor(customWidgets) {
@ -95,33 +91,6 @@ export default class DesktopLayout {
.css("width", "53px") .css("width", "53px")
.child(new GlobalMenuWidget()) .child(new GlobalMenuWidget())
.child(new ShortcutContainer()) .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 LeftPaneToggleWidget())
) )
.child(new LeftPaneContainer() .child(new LeftPaneContainer()
@ -145,63 +114,59 @@ export default class DesktopLayout {
.collapsible() .collapsible()
.id('center-pane') .id('center-pane')
.child(new SplitNoteContainer(() => .child(new SplitNoteContainer(() =>
new NoteWrapperWidget() new NoteWrapperWidget()
.child(new FlexContainer('row').class('title-row') .child(new FlexContainer('row').class('title-row')
.css("height", "50px") .css("height", "50px")
.css('align-items', "center") .css('align-items', "center")
.cssBlock('.title-row > * { margin: 5px; }') .cssBlock('.title-row > * { margin: 5px; }')
.child(new NoteIconWidget()) .child(new NoteIconWidget())
.child(new NoteTitleWidget()) .child(new NoteTitleWidget())
.child(new SpacerWidget(0, 1)) .child(new SpacerWidget(0, 1))
.child(new ClosePaneButton()) .child(new ClosePaneButton())
.child(new CreatePaneButton()) .child(new CreatePaneButton())
) )
.child( .child(
new RibbonContainer() new RibbonContainer()
.ribbon(new SearchDefinitionWidget()) .ribbon(new SearchDefinitionWidget())
.ribbon(new EditedNotesWidget()) .ribbon(new EditedNotesWidget())
.ribbon(new BookPropertiesWidget()) .ribbon(new BookPropertiesWidget())
.ribbon(new NotePropertiesWidget()) .ribbon(new NotePropertiesWidget())
.ribbon(new FilePropertiesWidget()) .ribbon(new FilePropertiesWidget())
.ribbon(new ImagePropertiesWidget()) .ribbon(new ImagePropertiesWidget())
.ribbon(new PromotedAttributesWidget()) .ribbon(new PromotedAttributesWidget())
.ribbon(new BasicPropertiesWidget()) .ribbon(new BasicPropertiesWidget())
.ribbon(new OwnedAttributeListWidget()) .ribbon(new OwnedAttributeListWidget())
.ribbon(new InheritedAttributesWidget()) .ribbon(new InheritedAttributesWidget())
.ribbon(new NotePathsWidget()) .ribbon(new NotePathsWidget())
.ribbon(new NoteMapRibbonWidget()) .ribbon(new NoteMapRibbonWidget())
.ribbon(new SimilarNotesWidget()) .ribbon(new SimilarNotesWidget())
.ribbon(new NoteInfoWidget()) .ribbon(new NoteInfoWidget())
.button(new EditButton()) .button(new EditButton())
.button(new ButtonWidget() .button(new NoteRevisionsButton())
.icon('bx-history') .button(new NoteActionsWidget())
.title("Note Revisions") )
.command("showNoteRevisions") .child(new SharedInfoWidget())
.titlePlacement("bottom")) .child(new NoteUpdateStatusWidget())
.button(new NoteActionsWidget()) .child(new FloatingButtons()
) .child(new RelationMapButtons())
.child(new SharedInfoWidget()) .child(new MermaidExportButton())
.child(new NoteUpdateStatusWidget()) .child(new BacklinksWidget())
.child(new FloatingButtons() )
.child(new RelationMapButtons()) .child(new MermaidWidget())
.child(new MermaidExportButton()) .child(
.child(new BacklinksWidget()) new ScrollingContainer()
) .filling()
.child(new MermaidWidget()) .child(new SqlTableSchemasWidget())
.child( .child(new NoteDetailWidget())
new ScrollingContainer() .child(new NoteListWidget())
.filling() .child(new SearchResultWidget())
.child(new SqlTableSchemasWidget()) .child(new SqlResultWidget())
.child(new NoteDetailWidget()) )
.child(new NoteListWidget()) .child(new FindWidget())
.child(new SearchResultWidget()) .child(
.child(new SqlResultWidget()) ...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC
) ...this.customWidgets.get('note-detail-pane')
.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')) .child(...this.customWidgets.get('center-pane'))

View File

@ -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';
}
}

View File

@ -1,13 +1,32 @@
import TypeWidget from "./type_widget.js"; import TypeWidget from "./type_widget.js";
const TPL = `<div class="note-detail-doc note-detail-printable">Z</div>`; const TPL = `<div class="note-detail-doc note-detail-printable">
<style>
.note-detail-doc-content {
padding: 15px;
}
</style>
<div class="note-detail-doc-content"></div>
</div>`;
export default class DocTypeWidget extends TypeWidget { export default class DocTypeWidget extends TypeWidget {
static getType() { return "doc"; } static getType() { return "doc"; }
doRender() { doRender() {
this.$widget = $(TPL); this.$widget = $(TPL);
this.$content = this.$widget.find('.note-detail-doc-content');
super.doRender(); super.doRender();
} }
async doRefresh(note) {
const docName = note.getLabelValue('docName');
if (docName) {
this.$content.load(`app/doc_notes/${docName}.html`);
} else {
this.$content.empty();
}
}
} }

View File

@ -250,6 +250,7 @@ function getLaunchBarRoot() {
}).note; }).note;
note.addLabel("iconClass", "bx bx-sidebar"); note.addLabel("iconClass", "bx bx-sidebar");
note.addLabel("docName", "launchbar_intro");
} }
return note; return note;
@ -269,6 +270,7 @@ function getLaunchBarAvailableShortcutsRoot() {
}).note; }).note;
note.addLabel("iconClass", "bx bx-hide"); note.addLabel("iconClass", "bx bx-hide");
note.addLabel("docName", "launchbar_intro");
} }
const branch = becca.getBranch('lb_availableshortcuts'); const branch = becca.getBranch('lb_availableshortcuts');
@ -294,6 +296,7 @@ function getLaunchBarVisibleShortcutsRoot() {
}).note; }).note;
note.addLabel("iconClass", "bx bx-show"); note.addLabel("iconClass", "bx bx-show");
note.addLabel("docName", "launchbar_intro");
} }
const branch = becca.getBranch('lb_visibleshortcuts'); const branch = becca.getBranch('lb_visibleshortcuts');