| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const treeChanges = (function() { | 
					
						
							| 
									
										
										
										
											2017-12-03 10:06:53 -05:00
										 |  |  |     async function moveBeforeNode(node, beforeNode) { | 
					
						
							| 
									
										
										
										
											2017-12-01 22:47:23 -05:00
										 |  |  |         await server.put('notes/' + node.data.note_tree_id + '/move-before/' + beforeNode.data.note_tree_id); | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |         changeNode(node, node => node.moveTo(beforeNode, 'before')); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-03 10:06:53 -05:00
										 |  |  |     async function moveAfterNode(node, afterNode) { | 
					
						
							| 
									
										
										
										
											2017-12-01 22:47:23 -05:00
										 |  |  |         await server.put('notes/' + node.data.note_tree_id + '/move-after/' + afterNode.data.note_tree_id); | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |         changeNode(node, node => node.moveTo(afterNode, 'after')); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  |     // beware that first arg is noteId and second is noteTreeId!
 | 
					
						
							|  |  |  |     async function cloneNoteAfter(noteId, afterNoteTreeId) { | 
					
						
							| 
									
										
										
										
											2017-12-01 22:47:23 -05:00
										 |  |  |         const resp = await server.put('notes/' + noteId + '/clone-after/' + afterNoteTreeId); | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-23 20:49:24 -05:00
										 |  |  |         if (!resp.success) { | 
					
						
							|  |  |  |             alert(resp.message); | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  |         await noteTree.reload(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |     async function moveToNode(node, toNode) { | 
					
						
							| 
									
										
										
										
											2017-12-01 22:47:23 -05:00
										 |  |  |         await server.put('notes/' + node.data.note_tree_id + '/move-to/' + toNode.data.note_id); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |         changeNode(node, node => { | 
					
						
							|  |  |  |             node.moveTo(toNode); | 
					
						
							| 
									
										
										
										
											2017-11-19 18:16:50 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |             toNode.setExpanded(true); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |             toNode.folder = true; | 
					
						
							|  |  |  |             toNode.renderTitle(); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-21 21:54:25 -05:00
										 |  |  |     async function cloneNoteTo(childNoteId, parentNoteId, prefix) { | 
					
						
							|  |  |  |         const resp = await server.put('notes/' + childNoteId + '/clone-to/' + parentNoteId, { | 
					
						
							|  |  |  |             prefix: prefix | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-23 20:49:24 -05:00
										 |  |  |         if (!resp.success) { | 
					
						
							|  |  |  |             alert(resp.message); | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  |         await noteTree.reload(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |     async function deleteNode(node) { | 
					
						
							| 
									
										
										
										
											2017-12-26 19:54:43 -05:00
										 |  |  |         if (!confirm('Are you sure you want to delete note "' + node.title + '" and all its sub-notes?')) { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |         await server.remove('notes/' + node.data.note_tree_id); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         if (!isTopLevelNode(node) && node.getParent().getChildren().length <= 1) { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |             node.getParent().folder = false; | 
					
						
							|  |  |  |             node.getParent().renderTitle(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |         let next = node.getNextSibling(); | 
					
						
							| 
									
										
										
										
											2017-12-14 22:53:25 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!next) { | 
					
						
							|  |  |  |             next = node.getPrevSibling(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         if (!next && !isTopLevelNode(node)) { | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  |             next = node.getParent(); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         node.remove(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         if (next) { | 
					
						
							|  |  |  |             // activate next element after this one is deleted so we don't lose focus
 | 
					
						
							|  |  |  |             next.setActive(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             noteTree.setCurrentNotePathToHash(next); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-19 23:12:39 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-09 21:42:22 -05:00
										 |  |  |         noteTree.reload(); | 
					
						
							| 
									
										
										
										
											2017-12-26 19:54:43 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         showMessage("Note has been deleted."); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  |     async function moveNodeUpInHierarchy(node) { | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         if (isTopLevelNode(node)) { | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-01 22:47:23 -05:00
										 |  |  |         await server.put('notes/' + node.data.note_tree_id + '/move-after/' + node.getParent().data.note_tree_id); | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         if (!isTopLevelNode(node) && node.getParent().getChildren().length <= 1) { | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  |             node.getParent().folder = false; | 
					
						
							|  |  |  |             node.getParent().renderTitle(); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  |         changeNode(node, node => node.moveTo(node.getParent(), 'after')); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function changeNode(node, func) { | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         assertArguments(node.data.parent_note_id, node.data.note_id); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-19 21:40:48 -05:00
										 |  |  |         noteTree.removeParentChildRelation(node.data.parent_note_id, node.data.note_id); | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         func(node); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-23 12:19:15 -05:00
										 |  |  |         node.data.parent_note_id = isTopLevelNode(node) ? 'root' : node.getParent().data.note_id; | 
					
						
							| 
									
										
										
										
											2017-12-17 16:28:13 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-19 21:40:48 -05:00
										 |  |  |         noteTree.setParentChildRelation(node.data.note_tree_id, node.data.parent_note_id, node.data.note_id); | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         noteTree.setCurrentNotePathToHash(node); | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |         moveBeforeNode, | 
					
						
							|  |  |  |         moveAfterNode, | 
					
						
							|  |  |  |         moveToNode, | 
					
						
							|  |  |  |         deleteNode, | 
					
						
							| 
									
										
										
										
											2017-11-28 15:17:11 -05:00
										 |  |  |         moveNodeUpInHierarchy, | 
					
						
							| 
									
										
										
										
											2017-11-22 23:16:54 -05:00
										 |  |  |         cloneNoteAfter, | 
					
						
							|  |  |  |         cloneNoteTo | 
					
						
							| 
									
										
										
										
											2017-11-04 22:10:41 -04:00
										 |  |  |     }; | 
					
						
							|  |  |  | })(); |