From 7ba619c71d827730a4405693ecd88d0a9ceb444d Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 12 Jun 2022 19:38:28 +0200 Subject: [PATCH] converted note source dialog to new pattern --- src/public/app/dialogs/note_source.js | 102 ++++++++++++------ src/public/app/layouts/desktop_layout.js | 4 +- .../app/services/root_command_executor.js | 4 - .../app/widgets/buttons/note_actions.js | 2 +- .../app/widgets/buttons/show_note_source.js | 2 +- src/public/app/widgets/dialogs/about.js | 2 - src/public/stylesheets/style.css | 6 -- src/views/desktop.ejs | 1 - src/views/dialogs/note_source.ejs | 15 --- 9 files changed, 74 insertions(+), 64 deletions(-) delete mode 100644 src/views/dialogs/note_source.ejs diff --git a/src/public/app/dialogs/note_source.js b/src/public/app/dialogs/note_source.js index d3ed8bc98..c96d9bf2a 100644 --- a/src/public/app/dialogs/note_source.js +++ b/src/public/app/dialogs/note_source.js @@ -1,40 +1,76 @@ import appContext from "../services/app_context.js"; +import BasicWidget from "../widgets/basic_widget.js"; import utils from "../services/utils.js"; -const $dialog = $("#note-source-dialog"); -const $noteSource = $("#note-source"); - -export async function showDialog() { - utils.openDialog($dialog); - - const noteCompletement = await appContext.tabManager.getActiveContext().getNoteComplement(); - - $noteSource.text(formatHtml(noteCompletement.content)); -} - -function formatHtml(str) { - const div = document.createElement('div'); - div.innerHTML = str.trim(); - - return formatNode(div, 0).innerHTML.trim(); -} - -function formatNode(node, level) { - const indentBefore = new Array(level++ + 1).join(' '); - const indentAfter = new Array(level - 1).join(' '); - let textNode; - - for (let i = 0; i < node.children.length; i++) { - textNode = document.createTextNode('\n' + indentBefore); - node.insertBefore(textNode, node.children[i]); - - formatNode(node.children[i], level); - - if (node.lastElementChild === node.children[i]) { - textNode = document.createTextNode('\n' + indentAfter); - node.appendChild(textNode); +const TPL = ` +`; + +export default class NoteSourceDialog extends BasicWidget { + doRender() { + this.$widget = $(TPL); + this.$noteSource = this.$widget.find(".note-source"); } - return node; + async refresh() { + const noteCompletement = await appContext.tabManager.getActiveContext().getNoteComplement(); + + this.$noteSource.text(this.formatHtml(noteCompletement.content)); + } + + formatHtml(str) { + const div = document.createElement('div'); + div.innerHTML = str.trim(); + + return this.formatNode(div, 0).innerHTML.trim(); + } + + formatNode(node, level) { + const indentBefore = new Array(level++ + 1).join(' '); + const indentAfter = new Array(level - 1).join(' '); + let textNode; + + for (let i = 0; i < node.children.length; i++) { + textNode = document.createTextNode('\n' + indentBefore); + node.insertBefore(textNode, node.children[i]); + + this.formatNode(node.children[i], level); + + if (node.lastElementChild === node.children[i]) { + textNode = document.createTextNode('\n' + indentAfter); + node.appendChild(textNode); + } + } + + return node; + } + + async openNoteSourceDialogEvent() { + await this.refresh(); + + utils.openDialog(this.$widget); + } } diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index e20513434..d64fb02d0 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -52,6 +52,7 @@ import FindWidget from "../widgets/find.js"; import TocWidget from "../widgets/toc.js"; import BulkActionsDialog from "../widgets/dialogs/bulk_actions.js"; import AboutDialog from "../widgets/dialogs/about.js"; +import NoteSourceDialog from "../dialogs/note_source.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -178,6 +179,7 @@ export default class DesktopLayout { ) ) .child(new BulkActionsDialog()) - .child(new AboutDialog()); + .child(new AboutDialog()) + .child(new NoteSourceDialog()); } } diff --git a/src/public/app/services/root_command_executor.js b/src/public/app/services/root_command_executor.js index 3817d49c0..a44c0903d 100644 --- a/src/public/app/services/root_command_executor.js +++ b/src/public/app/services/root_command_executor.js @@ -20,10 +20,6 @@ export default class RootCommandExecutor extends Component { import("../dialogs/note_revisions.js").then(d => d.showCurrentNoteRevisions()); } - showNoteSourceCommand() { - import("../dialogs/note_source.js").then(d => d.showDialog()); - } - pasteMarkdownIntoTextCommand() { import("../dialogs/markdown_import.js").then(d => d.importMarkdownInline()); } diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js index 87c20d386..80001dead 100644 --- a/src/public/app/widgets/buttons/note_actions.js +++ b/src/public/app/widgets/buttons/note_actions.js @@ -26,7 +26,7 @@ const TPL = `