From ebd715ca1bd08231141bb213cc3c9a69ed8c1da6 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 14 Jun 2022 23:51:16 +0200 Subject: [PATCH] converted include note dialog to new pattern --- src/public/app/dialogs/include_note.js | 56 --------- src/public/app/layouts/desktop_layout.js | 6 +- .../app/widgets/dialogs/include_note.js | 109 ++++++++++++++++++ .../app/{ => widgets}/dialogs/note_source.js | 6 +- .../app/widgets/type_widgets/editable_text.js | 2 +- src/views/desktop.ejs | 1 - src/views/dialogs/include_note.ejs | 46 -------- 7 files changed, 117 insertions(+), 109 deletions(-) delete mode 100644 src/public/app/dialogs/include_note.js create mode 100644 src/public/app/widgets/dialogs/include_note.js rename src/public/app/{ => widgets}/dialogs/note_source.js (93%) delete mode 100644 src/views/dialogs/include_note.ejs diff --git a/src/public/app/dialogs/include_note.js b/src/public/app/dialogs/include_note.js deleted file mode 100644 index f3bebc967..000000000 --- a/src/public/app/dialogs/include_note.js +++ /dev/null @@ -1,56 +0,0 @@ -import treeService from '../services/tree.js'; -import noteAutocompleteService from '../services/note_autocomplete.js'; -import utils from "../services/utils.js"; -import froca from "../services/froca.js"; - -const $dialog = $("#include-note-dialog"); -const $form = $("#include-note-form"); -const $autoComplete = $("#include-note-autocomplete"); - -/** @var TextTypeWidget */ -let textTypeWidget; - -export async function showDialog(widget) { - textTypeWidget = widget; - - $autoComplete.val(''); - - utils.openDialog($dialog); - - noteAutocompleteService.initNoteAutocomplete($autoComplete, { - hideGoToSelectedNoteButton: true, - allowCreatingNotes: true - }); - noteAutocompleteService.showRecentNotes($autoComplete); -} - -async function includeNote(notePath) { - const noteId = treeService.getNoteIdFromNotePath(notePath); - const note = await froca.getNote(noteId); - - const boxSize = $("input[name='include-note-box-size']:checked").val(); - - if (note.type === 'image') { - // there's no benefit to use insert note functionlity for images - // so we'll just add an IMG tag - textTypeWidget.addImage(noteId); - } - else { - textTypeWidget.addIncludeNote(noteId, boxSize); - } -} - -$form.on('submit', () => { - const notePath = $autoComplete.getSelectedNotePath(); - - if (notePath) { - $dialog.modal('hide'); - - includeNote(notePath); - } - else { - logError("No noteId to include."); - } - - return false; -}); diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index df42cc521..445c073ce 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -52,13 +52,14 @@ 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"; +import NoteSourceDialog from "../widgets/dialogs/note_source.js"; import HelpDialog from "../widgets/dialogs/help.js"; import RecentChangesDialog from "../widgets/dialogs/recent_changes.js"; import BackendLogDialog from "../widgets/dialogs/backend_log.js"; import BranchPrefixDialog from "../widgets/dialogs/branch_prefix.js"; import SortChildNotesDialog from "../widgets/dialogs/sort_child_notes.js"; import PasswordNoteSetDialog from "../widgets/dialogs/password_not_set.js"; +import IncludeNoteDialog from "../widgets/dialogs/include_note.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -192,6 +193,7 @@ export default class DesktopLayout { .child(new BackendLogDialog()) .child(new BranchPrefixDialog()) .child(new SortChildNotesDialog()) - .child(new PasswordNoteSetDialog()); + .child(new PasswordNoteSetDialog()) + .child(new IncludeNoteDialog()); } } diff --git a/src/public/app/widgets/dialogs/include_note.js b/src/public/app/widgets/dialogs/include_note.js new file mode 100644 index 000000000..5778c4909 --- /dev/null +++ b/src/public/app/widgets/dialogs/include_note.js @@ -0,0 +1,109 @@ +import treeService from '../../services/tree.js'; +import noteAutocompleteService from '../../services/note_autocomplete.js'; +import utils from "../../services/utils.js"; +import froca from "../../services/froca.js"; +import BasicWidget from "../basic_widget.js"; + +const TPL = ` +`; + +export default class IncludeNoteDialog extends BasicWidget { + doRender() { + this.$widget = $(TPL); + this.$form = this.$widget.find(".include-note-form"); + this.$autoComplete = this.$widget.find(".include-note-autocomplete"); + this.$form.on('submit', () => { + const notePath = this.$autoComplete.getSelectedNotePath(); + + if (notePath) { + this.$widget.modal('hide'); + + this.includeNote(notePath); + } + else { + logError("No noteId to include."); + } + + return false; + }) + } + + async showIncludeNoteDialogEvent({textTypeWidget}) { + this.textTypeWidget = textTypeWidget; + + await this.refresh(); + + utils.openDialog(this.$widget); + } + + async refresh(widget) { + this.$autoComplete.val(''); + + noteAutocompleteService.initNoteAutocomplete(this.$autoComplete, { + hideGoToSelectedNoteButton: true, + allowCreatingNotes: true + }); + noteAutocompleteService.showRecentNotes(this.$autoComplete); + } + + async includeNote(notePath) { + const noteId = treeService.getNoteIdFromNotePath(notePath); + const note = await froca.getNote(noteId); + + const boxSize = $("input[name='include-note-box-size']:checked").val(); + + if (note.type === 'image') { + // there's no benefit to use insert note functionlity for images + // so we'll just add an IMG tag + this.textTypeWidget.addImage(noteId); + } + else { + this.textTypeWidget.addIncludeNote(noteId, boxSize); + } + } +} diff --git a/src/public/app/dialogs/note_source.js b/src/public/app/widgets/dialogs/note_source.js similarity index 93% rename from src/public/app/dialogs/note_source.js rename to src/public/app/widgets/dialogs/note_source.js index c96d9bf2a..37e675b3b 100644 --- a/src/public/app/dialogs/note_source.js +++ b/src/public/app/widgets/dialogs/note_source.js @@ -1,6 +1,6 @@ -import appContext from "../services/app_context.js"; -import BasicWidget from "../widgets/basic_widget.js"; -import utils from "../services/utils.js"; +import appContext from "../../services/app_context.js"; +import BasicWidget from "../basic_widget.js"; +import utils from "../../services/utils.js"; const TPL = `