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) { | ||||
|         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); | ||||
|  | ||||
|         moveAfterNode(subjectNode, node); | ||||
|         treeChanges.moveAfterNode(subjectNode, node); | ||||
|  | ||||
|         noteTree.setClipboardNoteId(null); | ||||
|     } | ||||
| @@ -14,7 +14,7 @@ const contextMenu = (function() { | ||||
|     function pasteInto(node) { | ||||
|         const subjectNode = getNodeByKey(noteTree.getClipboardNoteId()); | ||||
|  | ||||
|         moveToNode(subjectNode, node); | ||||
|         treeChanges.moveToNode(subjectNode, node); | ||||
|  | ||||
|         noteTree.setClipboardNoteId(null); | ||||
|     } | ||||
| @@ -80,7 +80,7 @@ const contextMenu = (function() { | ||||
|                 pasteInto(node); | ||||
|             } | ||||
|             else if (ui.cmd === "delete") { | ||||
|                 deleteNode(node); | ||||
|                 treeChanges.deleteNode(node); | ||||
|             } | ||||
|             else { | ||||
|                 console.log("Unknown command: " + ui.cmd); | ||||
|   | ||||
| @@ -46,13 +46,13 @@ const dragAndDropSetup = { | ||||
|         // data.hitMode is 'before', 'after', or 'over'. | ||||
|  | ||||
|         if (data.hitMode === "before") { | ||||
|             moveBeforeNode(data.otherNode, node); | ||||
|             treeChanges.moveBeforeNode(data.otherNode, node); | ||||
|         } | ||||
|         else if (data.hitMode === "after") { | ||||
|             moveAfterNode(data.otherNode, node); | ||||
|             treeChanges.moveAfterNode(data.otherNode, node); | ||||
|         } | ||||
|         else if (data.hitMode === "over") { | ||||
|             moveToNode(data.otherNode, node); | ||||
|             treeChanges.moveToNode(data.otherNode, node); | ||||
|         } | ||||
|         else { | ||||
|             throw new Exception("Unknown hitMode=" + data.hitMode); | ||||
|   | ||||
| @@ -67,29 +67,29 @@ const noteTree = (function() { | ||||
|                 noteEditor.createNote(node, node.key, 'into', node.data.encryption); | ||||
|             }, | ||||
|             "del": node => { | ||||
|                 deleteNode(node); | ||||
|                 treeChanges.deleteNode(node); | ||||
|             }, | ||||
|             "shift+up": node => { | ||||
|                 const beforeNode = node.getPrevSibling(); | ||||
|  | ||||
|                 if (beforeNode !== null) { | ||||
|                     moveBeforeNode(node, beforeNode); | ||||
|                     treeChanges.moveBeforeNode(node, beforeNode); | ||||
|                 } | ||||
|             }, | ||||
|             "shift+down": node => { | ||||
|                 let afterNode = node.getNextSibling(); | ||||
|                 if (afterNode !== null) { | ||||
|                     moveAfterNode(node, afterNode); | ||||
|                     treeChanges.moveAfterNode(node, afterNode); | ||||
|                 } | ||||
|             }, | ||||
|             "shift+left": node => { | ||||
|                 moveNodeUp(node); | ||||
|                 treeChanges.moveNodeUp(node); | ||||
|             }, | ||||
|             "shift+right": node => { | ||||
|                 let toNode = node.getPrevSibling(); | ||||
|  | ||||
|                 if (toNode !== null) { | ||||
|                     moveToNode(node, toNode); | ||||
|                     treeChanges.moveToNode(node, toNode); | ||||
|                 } | ||||
|             }, | ||||
|             "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); | ||||
|     } | ||||
|  | ||||
|     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); | ||||
|  | ||||
|     await sendEntity(entity, sync.entity_name, syncContext.cookieJar); | ||||
|   | ||||
| @@ -264,7 +264,7 @@ | ||||
|  | ||||
|     <!-- Tree scripts --> | ||||
|     <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/drag_and_drop.js"></script> | ||||
|     <script src="javascripts/context_menu.js"></script> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user