mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	tree changes as a module
This commit is contained in:
		| @@ -6,7 +6,7 @@ const contextMenu = (function() { | |||||||
|     function pasteAfter(node) { |     function pasteAfter(node) { | ||||||
|         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); |         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); | ||||||
|  |  | ||||||
|         moveAfterNode(subjectNode, node); |         treeChanges.moveAfterNode(subjectNode, node); | ||||||
|  |  | ||||||
|         noteTree.setClipboardNoteId(null); |         noteTree.setClipboardNoteId(null); | ||||||
|     } |     } | ||||||
| @@ -14,7 +14,7 @@ const contextMenu = (function() { | |||||||
|     function pasteInto(node) { |     function pasteInto(node) { | ||||||
|         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); |         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); | ||||||
|  |  | ||||||
|         moveToNode(subjectNode, node); |         treeChanges.moveToNode(subjectNode, node); | ||||||
|  |  | ||||||
|         noteTree.setClipboardNoteId(null); |         noteTree.setClipboardNoteId(null); | ||||||
|     } |     } | ||||||
| @@ -80,7 +80,7 @@ const contextMenu = (function() { | |||||||
|                 pasteInto(node); |                 pasteInto(node); | ||||||
|             } |             } | ||||||
|             else if (ui.cmd === "delete") { |             else if (ui.cmd === "delete") { | ||||||
|                 deleteNode(node); |                 treeChanges.deleteNode(node); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 console.log("Unknown command: " + ui.cmd); |                 console.log("Unknown command: " + ui.cmd); | ||||||
|   | |||||||
| @@ -46,13 +46,13 @@ const dragAndDropSetup = { | |||||||
|         // data.hitMode is 'before', 'after', or 'over'. |         // data.hitMode is 'before', 'after', or 'over'. | ||||||
|  |  | ||||||
|         if (data.hitMode === "before") { |         if (data.hitMode === "before") { | ||||||
|             moveBeforeNode(data.otherNode, node); |             treeChanges.moveBeforeNode(data.otherNode, node); | ||||||
|         } |         } | ||||||
|         else if (data.hitMode === "after") { |         else if (data.hitMode === "after") { | ||||||
|             moveAfterNode(data.otherNode, node); |             treeChanges.moveAfterNode(data.otherNode, node); | ||||||
|         } |         } | ||||||
|         else if (data.hitMode === "over") { |         else if (data.hitMode === "over") { | ||||||
|             moveToNode(data.otherNode, node); |             treeChanges.moveToNode(data.otherNode, node); | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             throw new Exception("Unknown hitMode=" + data.hitMode); |             throw new Exception("Unknown hitMode=" + data.hitMode); | ||||||
|   | |||||||
| @@ -67,29 +67,29 @@ const noteTree = (function() { | |||||||
|                 noteEditor.createNote(node, node.key, 'into', node.data.encryption); |                 noteEditor.createNote(node, node.key, 'into', node.data.encryption); | ||||||
|             }, |             }, | ||||||
|             "del": node => { |             "del": node => { | ||||||
|                 deleteNode(node); |                 treeChanges.deleteNode(node); | ||||||
|             }, |             }, | ||||||
|             "shift+up": node => { |             "shift+up": node => { | ||||||
|                 const beforeNode = node.getPrevSibling(); |                 const beforeNode = node.getPrevSibling(); | ||||||
|  |  | ||||||
|                 if (beforeNode !== null) { |                 if (beforeNode !== null) { | ||||||
|                     moveBeforeNode(node, beforeNode); |                     treeChanges.moveBeforeNode(node, beforeNode); | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "shift+down": node => { |             "shift+down": node => { | ||||||
|                 let afterNode = node.getNextSibling(); |                 let afterNode = node.getNextSibling(); | ||||||
|                 if (afterNode !== null) { |                 if (afterNode !== null) { | ||||||
|                     moveAfterNode(node, afterNode); |                     treeChanges.moveAfterNode(node, afterNode); | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "shift+left": node => { |             "shift+left": node => { | ||||||
|                 moveNodeUp(node); |                 treeChanges.moveNodeUp(node); | ||||||
|             }, |             }, | ||||||
|             "shift+right": node => { |             "shift+right": node => { | ||||||
|                 let toNode = node.getPrevSibling(); |                 let toNode = node.getPrevSibling(); | ||||||
|  |  | ||||||
|                 if (toNode !== null) { |                 if (toNode !== null) { | ||||||
|                     moveToNode(node, toNode); |                     treeChanges.moveToNode(node, toNode); | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             "return": node => { |             "return": node => { | ||||||
|   | |||||||
							
								
								
									
										96
									
								
								public/javascripts/tree_changes.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								public/javascripts/tree_changes.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | "use strict"; | ||||||
|  |  | ||||||
|  | const treeChanges = (function() { | ||||||
|  |     function moveBeforeNode(node, beforeNode) { | ||||||
|  |         $.ajax({ | ||||||
|  |             url: baseApiUrl + 'notes/' + node.key + '/moveBefore/' + beforeNode.key, | ||||||
|  |             type: 'PUT', | ||||||
|  |             contentType: "application/json", | ||||||
|  |             success: () => { | ||||||
|  |                 node.moveTo(beforeNode, 'before'); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function moveAfterNode(node, afterNode) { | ||||||
|  |         $.ajax({ | ||||||
|  |             url: baseApiUrl + 'notes/' + node.key + '/moveAfter/' + afterNode.key, | ||||||
|  |             type: 'PUT', | ||||||
|  |             contentType: "application/json", | ||||||
|  |             success: () => { | ||||||
|  |                 node.moveTo(afterNode, 'after'); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function moveToNode(node, toNode) { | ||||||
|  |         $.ajax({ | ||||||
|  |             url: baseApiUrl + 'notes/' + node.key + '/moveTo/' + toNode.key, | ||||||
|  |             type: 'PUT', | ||||||
|  |             contentType: "application/json", | ||||||
|  |             success: () => { | ||||||
|  |                 node.moveTo(toNode); | ||||||
|  |  | ||||||
|  |                 toNode.setExpanded(true); | ||||||
|  |  | ||||||
|  |                 toNode.folder = true; | ||||||
|  |                 toNode.renderTitle(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function deleteNode(node) { | ||||||
|  |         if (confirm('Are you sure you want to delete note "' + node.title + '"?')) { | ||||||
|  |             $.ajax({ | ||||||
|  |                 url: baseApiUrl + 'notes/' + node.key, | ||||||
|  |                 type: 'DELETE', | ||||||
|  |                 success: () => { | ||||||
|  |                     if (node.getParent() !== null && node.getParent().getChildren().length <= 1) { | ||||||
|  |                         node.getParent().folder = false; | ||||||
|  |                         node.getParent().renderTitle(); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     glob.allNoteIds = glob.allNoteIds.filter(e => e !== node.key); | ||||||
|  |  | ||||||
|  |                     recentNotes.removeRecentNote(node.key); | ||||||
|  |  | ||||||
|  |                     let next = node.getNextSibling(); | ||||||
|  |                     if (!next) { | ||||||
|  |                         next = node.getParent(); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     node.remove(); | ||||||
|  |  | ||||||
|  |                     // activate next element after this one is deleted so we don't lose focus | ||||||
|  |                     next.setActive(); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function moveNodeUp(node) { | ||||||
|  |         if (node.getParent() !== null) { | ||||||
|  |             $.ajax({ | ||||||
|  |                 url: baseApiUrl + 'notes/' + node.key + '/moveAfter/' + node.getParent().key, | ||||||
|  |                 type: 'PUT', | ||||||
|  |                 contentType: "application/json", | ||||||
|  |                 success: () => { | ||||||
|  |                     if (node.getParent() !== null && node.getParent().getChildren().length <= 1) { | ||||||
|  |                         node.getParent().folder = false; | ||||||
|  |                         node.getParent().renderTitle(); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     node.moveTo(node.getParent(), 'after'); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return { | ||||||
|  |         moveBeforeNode, | ||||||
|  |         moveAfterNode, | ||||||
|  |         moveToNode, | ||||||
|  |         deleteNode, | ||||||
|  |         moveNodeUp | ||||||
|  |     }; | ||||||
|  | })(); | ||||||
| @@ -1,86 +0,0 @@ | |||||||
| "use strict"; |  | ||||||
|  |  | ||||||
| function moveBeforeNode(node, beforeNode) { |  | ||||||
|     $.ajax({ |  | ||||||
|         url: baseApiUrl + 'notes/' + node.key + '/moveBefore/' + beforeNode.key, |  | ||||||
|         type: 'PUT', |  | ||||||
|         contentType: "application/json", |  | ||||||
|         success: () => { |  | ||||||
|             node.moveTo(beforeNode, 'before'); |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function moveAfterNode(node, afterNode) { |  | ||||||
|     $.ajax({ |  | ||||||
|         url: baseApiUrl + 'notes/' + node.key + '/moveAfter/' + afterNode.key, |  | ||||||
|         type: 'PUT', |  | ||||||
|         contentType: "application/json", |  | ||||||
|         success: () => { |  | ||||||
|             node.moveTo(afterNode, 'after'); |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function moveToNode(node, toNode) { |  | ||||||
|     $.ajax({ |  | ||||||
|         url: baseApiUrl + 'notes/' + node.key + '/moveTo/' + toNode.key, |  | ||||||
|         type: 'PUT', |  | ||||||
|         contentType: "application/json", |  | ||||||
|         success: () => { |  | ||||||
|             node.moveTo(toNode); |  | ||||||
|  |  | ||||||
|             toNode.setExpanded(true); |  | ||||||
|  |  | ||||||
|             toNode.folder = true; |  | ||||||
|             toNode.renderTitle(); |  | ||||||
|         } |  | ||||||
|     }); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function deleteNode(node) { |  | ||||||
|     if (confirm('Are you sure you want to delete note "' + node.title + '"?')) { |  | ||||||
|         $.ajax({ |  | ||||||
|             url: baseApiUrl + 'notes/' + node.key, |  | ||||||
|             type: 'DELETE', |  | ||||||
|             success: () => { |  | ||||||
|                 if (node.getParent() !== null && node.getParent().getChildren().length <= 1) { |  | ||||||
|                     node.getParent().folder = false; |  | ||||||
|                     node.getParent().renderTitle(); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 glob.allNoteIds = glob.allNoteIds.filter(e => e !== node.key); |  | ||||||
|  |  | ||||||
|                 recentNotes.removeRecentNote(node.key); |  | ||||||
|  |  | ||||||
|                 let next = node.getNextSibling(); |  | ||||||
|                 if (!next) { |  | ||||||
|                     next = node.getParent(); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 node.remove(); |  | ||||||
|  |  | ||||||
|                 // activate next element after this one is deleted so we don't lose focus |  | ||||||
|                 next.setActive(); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function moveNodeUp(node) { |  | ||||||
|     if (node.getParent() !== null) { |  | ||||||
|         $.ajax({ |  | ||||||
|             url: baseApiUrl + 'notes/' + node.key + '/moveAfter/' + node.getParent().key, |  | ||||||
|             type: 'PUT', |  | ||||||
|             contentType: "application/json", |  | ||||||
|             success: () => { |  | ||||||
|                 if (node.getParent() !== null && node.getParent().getChildren().length <= 1) { |  | ||||||
|                     node.getParent().folder = false; |  | ||||||
|                     node.getParent().renderTitle(); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 node.moveTo(node.getParent(), 'after'); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -127,6 +127,11 @@ async function readAndPushEntity(sync, syncContext) { | |||||||
|         logSyncError("Unrecognized entity type " + sync.entity_name, null); |         logSyncError("Unrecognized entity type " + sync.entity_name, null); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (!entity) { | ||||||
|  |         logSync("Sync entity for " + sync.entity_name + " " + sync.entity_id + " doesn't exist. Skipping."); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     logSync("Pushing changes in " + sync.entity_name + " " + sync.entity_id); |     logSync("Pushing changes in " + sync.entity_name + " " + sync.entity_id); | ||||||
|  |  | ||||||
|     await sendEntity(entity, sync.entity_name, syncContext.cookieJar); |     await sendEntity(entity, sync.entity_name, syncContext.cookieJar); | ||||||
|   | |||||||
| @@ -264,7 +264,7 @@ | |||||||
|  |  | ||||||
|     <!-- Tree scripts --> |     <!-- Tree scripts --> | ||||||
|     <script src="javascripts/note_tree.js"></script> |     <script src="javascripts/note_tree.js"></script> | ||||||
|     <script src="javascripts/tree_mutations.js"></script> |     <script src="javascripts/tree_changes.js"></script> | ||||||
|     <script src="javascripts/tree_utils.js"></script> |     <script src="javascripts/tree_utils.js"></script> | ||||||
|     <script src="javascripts/drag_and_drop.js"></script> |     <script src="javascripts/drag_and_drop.js"></script> | ||||||
|     <script src="javascripts/context_menu.js"></script> |     <script src="javascripts/context_menu.js"></script> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user