mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	import & export fixed
This commit is contained in:
		
							parent
							
								
									96a7b4e45e
								
							
						
					
					
						commit
						55d1f9e9f0
					
				| @ -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: $("<h2>").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({ | $('[data-toggle="tooltip"]').tooltip({ | ||||||
|     html: true |     html: true | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ import treeUtils from "../services/tree_utils.js"; | |||||||
| import utils from "../services/utils.js"; | import utils from "../services/utils.js"; | ||||||
| import ws from "../services/ws.js"; | import ws from "../services/ws.js"; | ||||||
| import toastService from "../services/toast.js"; | import toastService from "../services/toast.js"; | ||||||
|  | import treeCache from "../services/tree_cache.js"; | ||||||
| 
 | 
 | ||||||
| const $dialog = $("#export-dialog"); | const $dialog = $("#export-dialog"); | ||||||
| const $form = $("#export-form"); | const $form = $("#export-form"); | ||||||
| @ -16,7 +17,7 @@ const $opmlVersions = $("#opml-versions"); | |||||||
| let taskId = ''; | let taskId = ''; | ||||||
| let branchId = null; | let branchId = null; | ||||||
| 
 | 
 | ||||||
| export async function showDialog(node, defaultType) { | export async function showDialog(notePath, defaultType) { | ||||||
|     utils.closeActiveDialog(); |     utils.closeActiveDialog(); | ||||||
| 
 | 
 | ||||||
|     // each opening of the dialog resets the taskId so we don't associate it with previous exports anymore
 |     // 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(); |     $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); |     $noteTitle.html(noteTitle); | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ const $explodeArchivesCheckbox = $("#explode-archives-checkbox"); | |||||||
| 
 | 
 | ||||||
| let parentNoteId = null; | let parentNoteId = null; | ||||||
| 
 | 
 | ||||||
| export async function showDialog(node) { | export async function showDialog(noteId) { | ||||||
|     utils.closeActiveDialog(); |     utils.closeActiveDialog(); | ||||||
| 
 | 
 | ||||||
|     $fileUploadInput.val('').trigger('change'); // to trigger Import button disabling listener below
 |     $fileUploadInput.val('').trigger('change'); // to trigger Import button disabling listener below
 | ||||||
| @ -28,7 +28,7 @@ export async function showDialog(node) { | |||||||
| 
 | 
 | ||||||
|     glob.activeDialog = $dialog; |     glob.activeDialog = $dialog; | ||||||
| 
 | 
 | ||||||
|     parentNoteId = node.data.noteId; |     parentNoteId = noteId; | ||||||
| 
 | 
 | ||||||
|     $noteTitle.text(await treeUtils.getNoteTitle(parentNoteId)); |     $noteTitle.text(await treeUtils.getNoteTitle(parentNoteId)); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -96,6 +96,10 @@ class TabContext extends Component { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     isActive() { | ||||||
|  |         return this.appContext.activeTabId === this.tabId; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     getTabState() { |     getTabState() { | ||||||
|         if (!this.notePath) { |         if (!this.notePath) { | ||||||
|             return null; |             return null; | ||||||
|  | |||||||
| @ -193,6 +193,12 @@ class TreeCache { | |||||||
|             return this.branches[branchId]; |             return this.branches[branchId]; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     async getBranchId(parentNoteId, childNoteId) { | ||||||
|  |         const child = await this.getNote(childNoteId); | ||||||
|  | 
 | ||||||
|  |         return child.parentToBranch[parentNoteId]; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const treeCache = new TreeCache(); | const treeCache = new TreeCache(); | ||||||
|  | |||||||
| @ -99,9 +99,9 @@ class TreeContextMenu { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async selectContextMenuItem(event, cmd) { |     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); |             noteDetailService.openInTab(notePath, false); | ||||||
|         } |         } | ||||||
|         else if (cmd.startsWith("insertNoteAfter")) { |         else if (cmd.startsWith("insertNoteAfter")) { | ||||||
| @ -160,11 +160,11 @@ class TreeContextMenu { | |||||||
|         } |         } | ||||||
|         else if (cmd === "export") { |         else if (cmd === "export") { | ||||||
|             const exportDialog = await import('../dialogs/export.js'); |             const exportDialog = await import('../dialogs/export.js'); | ||||||
|             exportDialog.showDialog(this.node,"subtree"); |             exportDialog.showDialog(notePath,"subtree"); | ||||||
|         } |         } | ||||||
|         else if (cmd === "importIntoNote") { |         else if (cmd === "importIntoNote") { | ||||||
|             const importDialog = await import('../dialogs/import.js'); |             const importDialog = await import('../dialogs/import.js'); | ||||||
|             importDialog.showDialog(this.node); |             importDialog.showDialog(this.node.data.noteId); | ||||||
|         } |         } | ||||||
|         else if (cmd === "collapseSubtree") { |         else if (cmd === "collapseSubtree") { | ||||||
|             this.treeWidget.collapseTree(this.node); |             this.treeWidget.collapseTree(this.node); | ||||||
|  | |||||||
| @ -1,4 +1,7 @@ | |||||||
| import TabAwareWidget from "./tab_aware_widget.js"; | 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 = ` | const TPL = ` | ||||||
| <div class="dropdown note-actions"> | <div class="dropdown note-actions"> | ||||||
| @ -37,7 +40,20 @@ export default class NoteActionsWidget extends TabAwareWidget { | |||||||
|         this.$showNoteInfoButton = this.$widget.find('.show-note-info-button'); |         this.$showNoteInfoButton = this.$widget.find('.show-note-info-button'); | ||||||
|         this.$showNoteInfoButton.on('click', e => this.triggerEvent(e, 'showNoteInfo')); |         this.$showNoteInfoButton.on('click', e => this.triggerEvent(e, 'showNoteInfo')); | ||||||
| 
 | 
 | ||||||
|  |         this.$printNoteButton = this.$widget.find('.print-note-button'); | ||||||
|  |         this.$printNoteButton.on('click', e => this.triggerEvent(e, 'printActiveNote')); | ||||||
|  | 
 | ||||||
|         this.$exportNoteButton = this.$widget.find('.export-note-button'); |         this.$exportNoteButton = this.$widget.find('.export-note-button'); | ||||||
|  |         this.$exportNoteButton.on("click", () => { | ||||||
|  |             if (this.$exportNoteButton.hasClass("disabled")) { | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             import('../dialogs/export.js').then(d => d.showDialog(this.tabContext.notePath, 'single')); | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         this.$importNoteButton = this.$widget.find('.import-files-button'); | ||||||
|  |         this.$importNoteButton.on("click", () => import('../dialogs/import.js').then(d => d.showDialog(this.tabContext.note.noteId))); | ||||||
| 
 | 
 | ||||||
|         return this.$widget; |         return this.$widget; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import protectedSessionHolder from "../services/protected_session_holder.js"; | |||||||
| import appContext from "../services/app_context.js"; | import appContext from "../services/app_context.js"; | ||||||
| import SpacedUpdate from "../services/spaced_update.js"; | import SpacedUpdate from "../services/spaced_update.js"; | ||||||
| import server from "../services/server.js"; | import server from "../services/server.js"; | ||||||
|  | import libraryLoader from "../services/library_loader.js"; | ||||||
| 
 | 
 | ||||||
| const TPL = ` | const TPL = ` | ||||||
| <div class="note-detail"> | <div class="note-detail"> | ||||||
| @ -182,4 +183,22 @@ export default class NoteDetailWidget extends TabAwareWidget { | |||||||
|             await this.spacedUpdate.updateNowIfNecessary(); |             await this.spacedUpdate.updateNowIfNecessary(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     async printActiveNoteListener() { | ||||||
|  |         if (!this.tabContext.isActive()) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         await libraryLoader.requireLibrary(libraryLoader.PRINT_THIS); | ||||||
|  | 
 | ||||||
|  |         this.$widget.find('.note-detail-printable:visible').printThis({ | ||||||
|  |             header: $("<h2>").text(this.tabContext.note && this.tabContext.note.title).prop('outerHTML') , | ||||||
|  |             importCSS: false, | ||||||
|  |             loadCSS: [ | ||||||
|  |                 "libraries/codemirror/codemirror.css", | ||||||
|  |                 "libraries/ckeditor/ckeditor-content.css" | ||||||
|  |             ], | ||||||
|  |             debug: true | ||||||
|  |         }); | ||||||
|  |     } | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam