From a7ddc33b6d25f47da7d8586309308f25b9ae48c0 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 16 Mar 2020 22:14:18 +0100 Subject: [PATCH] sorting of widgets --- src/public/javascripts/services/bundle.js | 9 +++------ .../javascripts/services/entrypoints.js | 2 ++ src/public/javascripts/widgets/attributes.js | 6 +++--- .../javascripts/widgets/basic_widget.js | 3 --- src/public/javascripts/widgets/calendar.js | 2 +- .../javascripts/widgets/collapsible_widget.js | 19 +++++++++---------- src/public/javascripts/widgets/component.js | 14 ++++---------- .../javascripts/widgets/desktop_layout.js | 2 +- .../javascripts/widgets/edited_notes.js | 4 ++-- .../javascripts/widgets/flex_container.js | 14 ++++++++++---- src/public/javascripts/widgets/link_map.js | 6 +++--- src/public/javascripts/widgets/note_info.js | 2 +- .../javascripts/widgets/note_revisions.js | 6 +++--- .../javascripts/widgets/similar_notes.js | 4 ++-- .../javascripts/widgets/what_links_here.js | 6 +++--- 15 files changed, 47 insertions(+), 52 deletions(-) diff --git a/src/public/javascripts/services/bundle.js b/src/public/javascripts/services/bundle.js index cbb5635d3..420bbafe0 100644 --- a/src/public/javascripts/services/bundle.js +++ b/src/public/javascripts/services/bundle.js @@ -36,7 +36,6 @@ async function getWidgetBundlesByParent() { const byParent = {}; for (const bundle of scriptBundles) { - let widget; try { @@ -47,15 +46,13 @@ async function getWidgetBundlesByParent() { continue; } - if (!widget.getParentWidget) { + if (!widget.parentWidget) { console.log(`Custom widget does not have mandatory 'getParent()' method defined`); continue; } - const parentWidgetName = widget.getParentWidget(); - - byParent[parentWidgetName] = byParent[parentWidgetName] || []; - byParent[parentWidgetName].push(widget); + byParent[widget.parentWidget] = byParent[widget.parentWidget] || []; + byParent[widget.parentWidget].push(widget); } return byParent; diff --git a/src/public/javascripts/services/entrypoints.js b/src/public/javascripts/services/entrypoints.js index aa220371a..55270ca52 100644 --- a/src/public/javascripts/services/entrypoints.js +++ b/src/public/javascripts/services/entrypoints.js @@ -58,6 +58,8 @@ export default class Entrypoints extends Component { textHoverBgColor: '#555', caseSelectedColor: 'var(--main-border-color)' }); + + findInPage.openFindWindow(); } async createNoteIntoDayNoteCommand() { diff --git a/src/public/javascripts/widgets/attributes.js b/src/public/javascripts/widgets/attributes.js index dd00bd394..2ad3fe358 100644 --- a/src/public/javascripts/widgets/attributes.js +++ b/src/public/javascripts/widgets/attributes.js @@ -4,16 +4,16 @@ import ws from "../services/ws.js"; import CollapsibleWidget from "./collapsible_widget.js"; export default class AttributesWidget extends CollapsibleWidget { - getWidgetTitle() { return "Attributes"; } + get widgetTitle() { return "Attributes"; } - getHelp() { + get help() { return { title: "Attributes are key-value records owned by assigned to this note.", url: "https://github.com/zadam/trilium/wiki/Attributes" }; } - getHeaderActions() { + get headerActions() { const $showFullButton = $("").append("show dialog").addClass('widget-header-action'); $showFullButton.on('click', async () => { const attributesDialog = await import("../dialogs/attributes.js"); diff --git a/src/public/javascripts/widgets/basic_widget.js b/src/public/javascripts/widgets/basic_widget.js index 35ff2c203..bfd6a7d8b 100644 --- a/src/public/javascripts/widgets/basic_widget.js +++ b/src/public/javascripts/widgets/basic_widget.js @@ -1,5 +1,4 @@ import Component from "./component.js"; -import keyboardActionsService from "../services/keyboard_actions.js"; class BasicWidget extends Component { constructor() { @@ -9,8 +8,6 @@ class BasicWidget extends Component { style: '' }; this.classes = []; - - this.position = 0; } id(id) { diff --git a/src/public/javascripts/widgets/calendar.js b/src/public/javascripts/widgets/calendar.js index 051622d0b..ec6bea722 100644 --- a/src/public/javascripts/widgets/calendar.js +++ b/src/public/javascripts/widgets/calendar.js @@ -25,7 +25,7 @@ const TPL = ` `; export default class CalendarWidget extends CollapsibleWidget { - getWidgetTitle() { return "Calendar"; } + get widgetTitle() { return "Calendar"; } isEnabled() { return super.isEnabled() diff --git a/src/public/javascripts/widgets/collapsible_widget.js b/src/public/javascripts/widgets/collapsible_widget.js index c8ff3497d..9cbd53157 100644 --- a/src/public/javascripts/widgets/collapsible_widget.js +++ b/src/public/javascripts/widgets/collapsible_widget.js @@ -21,11 +21,11 @@ const WIDGET_TPL = ` `; export default class CollapsibleWidget extends TabAwareWidget { - getWidgetTitle() { return "Untitled widget"; } + get widgetTitle() { return "Untitled widget"; } - getHeaderActions() { return []; } + get headerActions() { return []; } - getHelp() { return {}; } + get help() { return {}; } doRender() { this.$widget = $(WIDGET_TPL); @@ -47,16 +47,15 @@ export default class CollapsibleWidget extends TabAwareWidget { this.$body = this.$bodyWrapper.find('.card-body'); this.$title = this.$widget.find('.widget-title'); - this.$title.text(this.getWidgetTitle()); + this.$title.text(this.widgetTitle); this.$help = this.$widget.find('.widget-help'); - const help = this.getHelp(); - if (help.title) { - this.$help.attr("title", help.title); - this.$help.attr("href", help.url || "javascript:"); + if (this.help.title) { + this.$help.attr("title", this.help.title); + this.$help.attr("href", this.help.url || "javascript:"); - if (!help.url) { + if (!this.help.url) { this.$help.addClass('no-link'); } } @@ -65,7 +64,7 @@ export default class CollapsibleWidget extends TabAwareWidget { } this.$headerActions = this.$widget.find('.widget-header-actions'); - this.$headerActions.append(...this.getHeaderActions()); + this.$headerActions.append(...this.headerActions); this.initialized = this.doRenderBody(); diff --git a/src/public/javascripts/widgets/component.js b/src/public/javascripts/widgets/component.js index 42bb2ca8f..c5d037d0d 100644 --- a/src/public/javascripts/widgets/component.js +++ b/src/public/javascripts/widgets/component.js @@ -28,17 +28,11 @@ export default class Component { return this; } - child(component) { - component.setParent(this); - - this.children.push(component); - - return this; - } - - addChildren(components = []) { + child(...components) { for (const component of components) { - this.child(component); + component.setParent(this); + + this.children.push(component); } return this; diff --git a/src/public/javascripts/widgets/desktop_layout.js b/src/public/javascripts/widgets/desktop_layout.js index e05f33f97..9d0f3fbf8 100644 --- a/src/public/javascripts/widgets/desktop_layout.js +++ b/src/public/javascripts/widgets/desktop_layout.js @@ -148,7 +148,7 @@ export default class DesktopLayout { .child(new TabCachingWidget(() => new NoteRevisionsWidget())) .child(new TabCachingWidget(() => new SimilarNotesWidget())) .child(new TabCachingWidget(() => new WhatLinksHereWidget())) - .addChildren(this.customWidgets['right-pane']) + .child(...this.customWidgets['right-pane']) ) .child(new SidePaneToggles().hideInZenMode()) ); diff --git a/src/public/javascripts/widgets/edited_notes.js b/src/public/javascripts/widgets/edited_notes.js index 3e47d7f6b..f3819e64d 100644 --- a/src/public/javascripts/widgets/edited_notes.js +++ b/src/public/javascripts/widgets/edited_notes.js @@ -4,9 +4,9 @@ import server from "../services/server.js"; import treeCache from "../services/tree_cache.js"; export default class EditedNotesWidget extends CollapsibleWidget { - getWidgetTitle() { return "Edited notes on this day"; } + get widgetTitle() { return "Edited notes on this day"; } - getHelp() { + get help() { return { title: "This contains a list of notes created or updated on this day." }; diff --git a/src/public/javascripts/widgets/flex_container.js b/src/public/javascripts/widgets/flex_container.js index b52d2daaf..c9f591c3b 100644 --- a/src/public/javascripts/widgets/flex_container.js +++ b/src/public/javascripts/widgets/flex_container.js @@ -15,11 +15,17 @@ export default class FlexContainer extends BasicWidget { this.positionCounter = 10; } - child(component) { - super.child(component); + child(...components) { + super.child(...components); - component.position = this.positionCounter; - this.positionCounter += 10; + for (const component of components) { + if (!component.position) { + component.position = this.positionCounter; + this.positionCounter += 10; + } + } + + this.children.sort((a, b) => a.position - b.position < 0 ? -1 : 1); return this; } diff --git a/src/public/javascripts/widgets/link_map.js b/src/public/javascripts/widgets/link_map.js index ef47e11c3..e8ddda2db 100644 --- a/src/public/javascripts/widgets/link_map.js +++ b/src/public/javascripts/widgets/link_map.js @@ -9,16 +9,16 @@ const TPL = ` `; export default class LinkMapWidget extends CollapsibleWidget { - getWidgetTitle() { return "Link map"; } + get widgetTitle() { return "Link map"; } - getHelp() { + get help() { return { title: "Link map shows incoming and outgoing links from/to the current note.", url: "https://github.com/zadam/trilium/wiki/Link-map" }; } - getHeaderActions() { + get headerActions() { const $showFullButton = $("").append("show full").addClass('widget-header-action'); $showFullButton.on('click', async () => { const linkMapDialog = await import("../dialogs/link_map.js"); diff --git a/src/public/javascripts/widgets/note_info.js b/src/public/javascripts/widgets/note_info.js index 754d90cfc..cff5446df 100644 --- a/src/public/javascripts/widgets/note_info.js +++ b/src/public/javascripts/widgets/note_info.js @@ -43,7 +43,7 @@ const TPL = ` `; export default class NoteInfoWidget extends CollapsibleWidget { - getWidgetTitle() { return "Note info"; } + get widgetTitle() { return "Note info"; } async doRenderBody() { this.$body.html(TPL); diff --git a/src/public/javascripts/widgets/note_revisions.js b/src/public/javascripts/widgets/note_revisions.js index 57c2aad89..84f5b11ad 100644 --- a/src/public/javascripts/widgets/note_revisions.js +++ b/src/public/javascripts/widgets/note_revisions.js @@ -7,16 +7,16 @@ const TPL = ` `; class NoteRevisionsWidget extends CollapsibleWidget { - getWidgetTitle() { return "Note revisions"; } + get widgetTitle() { return "Note revisions"; } - getHelp() { + get help() { return { title: "Note revisions track changes in the note across the time.", url: "https://github.com/zadam/trilium/wiki/Note-revisions" }; } - getHeaderActions() { + get headerActions() { const $showFullButton = $("").append("show dialog").addClass('widget-header-action'); $showFullButton.on('click', async () => { const attributesDialog = await import("../dialogs/note_revisions.js"); diff --git a/src/public/javascripts/widgets/similar_notes.js b/src/public/javascripts/widgets/similar_notes.js index b0b7b96bd..e8b5ebb76 100644 --- a/src/public/javascripts/widgets/similar_notes.js +++ b/src/public/javascripts/widgets/similar_notes.js @@ -4,9 +4,9 @@ import server from "../services/server.js"; import treeCache from "../services/tree_cache.js"; export default class SimilarNotesWidget extends CollapsibleWidget { - getWidgetTitle() { return "Similar notes"; } + get widgetTitle() { return "Similar notes"; } - getHelp() { + get help() { return { title: "This list contains notes which might be similar to the current note based on textual similarity of note title." }; diff --git a/src/public/javascripts/widgets/what_links_here.js b/src/public/javascripts/widgets/what_links_here.js index d392ac212..8c82eb71f 100644 --- a/src/public/javascripts/widgets/what_links_here.js +++ b/src/public/javascripts/widgets/what_links_here.js @@ -2,15 +2,15 @@ import CollapsibleWidget from "./collapsible_widget.js"; import linkService from "../services/link.js"; export default class WhatLinksHereWidget extends CollapsibleWidget { - getWidgetTitle() { return "What links here"; } + get widgetTitle() { return "What links here"; } - getHelp() { + get help() { return { title: "This list contains all notes which link to this note through links and relations." }; } - getHeaderActions() { + get headerActions() { const $showFullButton = $("").append("show link map").addClass('widget-header-action'); $showFullButton.on('click', async () => { const linkMapDialog = await import("../dialogs/link_map.js");