From 55d1f9e9f08694ce0a57216cb6d65c265e6bcdd5 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 21 Jan 2020 21:43:23 +0100 Subject: [PATCH] import & export fixed --- src/public/javascripts/desktop.js | 40 ------------------- src/public/javascripts/dialogs/export.js | 9 +++-- src/public/javascripts/dialogs/import.js | 4 +- .../javascripts/services/tab_context.js | 4 ++ src/public/javascripts/services/tree_cache.js | 6 +++ .../javascripts/services/tree_context_menu.js | 8 ++-- .../javascripts/widgets/note_actions.js | 16 ++++++++ src/public/javascripts/widgets/note_detail.js | 19 +++++++++ 8 files changed, 57 insertions(+), 49 deletions(-) diff --git a/src/public/javascripts/desktop.js b/src/public/javascripts/desktop.js index 9ba8c3601..77ba2395c 100644 --- a/src/public/javascripts/desktop.js +++ b/src/public/javascripts/desktop.js @@ -116,46 +116,6 @@ if (utils.isElectron()) { }); } -const $noteTabContainer = $("#note-tab-container"); - -$noteTabContainer.on("click", ".export-note-button", function () { - if ($(this).hasClass("disabled")) { - return; - } - - import('./dialogs/export.js').then(d => d.showDialog(appContext.getMainNoteTree().getActiveNode(), 'single')); -}); - -$noteTabContainer.on("click", ".import-files-button", - () => import('./dialogs/import.js').then(d => d.showDialog(appContext.getMainNoteTree().getActiveNode()))); - -async function printActiveNote() { - if ($(this).hasClass("disabled")) { - return; - } - - const $tabContext = appContext.getActiveTabContext(); - if (!$tabContext) { - return; - } - - await libraryLoader.requireLibrary(libraryLoader.PRINT_THIS); - - $tabContext.$tabContent.find('.note-detail-printable:visible').printThis({ - header: $("

").text($tabContext.note && $tabContext.note.title).prop('outerHTML') , - importCSS: false, - loadCSS: [ - "libraries/codemirror/codemirror.css", - "libraries/ckeditor/ckeditor-content.css" - ], - debug: true - }); -} - -keyboardActionService.setGlobalActionHandler("PrintActiveNote", printActiveNote); - -$noteTabContainer.on("click", ".print-note-button", printActiveNote); - $('[data-toggle="tooltip"]').tooltip({ html: true }); diff --git a/src/public/javascripts/dialogs/export.js b/src/public/javascripts/dialogs/export.js index fc8b392be..895eb46ea 100644 --- a/src/public/javascripts/dialogs/export.js +++ b/src/public/javascripts/dialogs/export.js @@ -2,6 +2,7 @@ import treeUtils from "../services/tree_utils.js"; import utils from "../services/utils.js"; import ws from "../services/ws.js"; import toastService from "../services/toast.js"; +import treeCache from "../services/tree_cache.js"; const $dialog = $("#export-dialog"); const $form = $("#export-form"); @@ -16,7 +17,7 @@ const $opmlVersions = $("#opml-versions"); let taskId = ''; let branchId = null; -export async function showDialog(node, defaultType) { +export async function showDialog(notePath, defaultType) { utils.closeActiveDialog(); // each opening of the dialog resets the taskId so we don't associate it with previous exports anymore @@ -42,9 +43,11 @@ export async function showDialog(node, defaultType) { $dialog.modal(); - branchId = node.data.branchId; + const {noteId, parentNoteId} = treeUtils.getNoteIdAndParentIdFromNotePath(notePath); - const noteTitle = await treeUtils.getNoteTitle(node.data.noteId); + branchId = await treeCache.getBranchId(parentNoteId, noteId); + + const noteTitle = await treeUtils.getNoteTitle(noteId); $noteTitle.html(noteTitle); } diff --git a/src/public/javascripts/dialogs/import.js b/src/public/javascripts/dialogs/import.js index d527bd6fe..828eb1d59 100644 --- a/src/public/javascripts/dialogs/import.js +++ b/src/public/javascripts/dialogs/import.js @@ -15,7 +15,7 @@ const $explodeArchivesCheckbox = $("#explode-archives-checkbox"); let parentNoteId = null; -export async function showDialog(node) { +export async function showDialog(noteId) { utils.closeActiveDialog(); $fileUploadInput.val('').trigger('change'); // to trigger Import button disabling listener below @@ -28,7 +28,7 @@ export async function showDialog(node) { glob.activeDialog = $dialog; - parentNoteId = node.data.noteId; + parentNoteId = noteId; $noteTitle.text(await treeUtils.getNoteTitle(parentNoteId)); diff --git a/src/public/javascripts/services/tab_context.js b/src/public/javascripts/services/tab_context.js index a94dabdd5..a1961a929 100644 --- a/src/public/javascripts/services/tab_context.js +++ b/src/public/javascripts/services/tab_context.js @@ -96,6 +96,10 @@ class TabContext extends Component { } } + isActive() { + return this.appContext.activeTabId === this.tabId; + } + getTabState() { if (!this.notePath) { return null; diff --git a/src/public/javascripts/services/tree_cache.js b/src/public/javascripts/services/tree_cache.js index 0b7eef957..737e6c349 100644 --- a/src/public/javascripts/services/tree_cache.js +++ b/src/public/javascripts/services/tree_cache.js @@ -193,6 +193,12 @@ class TreeCache { return this.branches[branchId]; } } + + async getBranchId(parentNoteId, childNoteId) { + const child = await this.getNote(childNoteId); + + return child.parentToBranch[parentNoteId]; + } } const treeCache = new TreeCache(); diff --git a/src/public/javascripts/services/tree_context_menu.js b/src/public/javascripts/services/tree_context_menu.js index f4b73f018..8d268a55b 100644 --- a/src/public/javascripts/services/tree_context_menu.js +++ b/src/public/javascripts/services/tree_context_menu.js @@ -99,9 +99,9 @@ class TreeContextMenu { } async selectContextMenuItem(event, cmd) { - if (cmd === 'openInTab') { - const notePath = await treeUtils.getNotePath(this.node); + const notePath = await treeUtils.getNotePath(this.node); + if (cmd === 'openInTab') { noteDetailService.openInTab(notePath, false); } else if (cmd.startsWith("insertNoteAfter")) { @@ -160,11 +160,11 @@ class TreeContextMenu { } else if (cmd === "export") { const exportDialog = await import('../dialogs/export.js'); - exportDialog.showDialog(this.node,"subtree"); + exportDialog.showDialog(notePath,"subtree"); } else if (cmd === "importIntoNote") { const importDialog = await import('../dialogs/import.js'); - importDialog.showDialog(this.node); + importDialog.showDialog(this.node.data.noteId); } else if (cmd === "collapseSubtree") { this.treeWidget.collapseTree(this.node); diff --git a/src/public/javascripts/widgets/note_actions.js b/src/public/javascripts/widgets/note_actions.js index 089c4f264..4676da2a7 100644 --- a/src/public/javascripts/widgets/note_actions.js +++ b/src/public/javascripts/widgets/note_actions.js @@ -1,4 +1,7 @@ import TabAwareWidget from "./tab_aware_widget.js"; +import appContext from "../services/app_context.js"; +import libraryLoader from "../services/library_loader.js"; +import keyboardActionService from "../services/keyboard_actions.js"; const TPL = `