From 900f169dab8077c6ad3c1a0a0d3b86c7111b167c Mon Sep 17 00:00:00 2001 From: azivner Date: Sat, 4 Nov 2017 22:10:41 -0400 Subject: [PATCH] tree changes as a module --- public/javascripts/context_menu.js | 6 +- public/javascripts/drag_and_drop.js | 6 +- public/javascripts/note_tree.js | 10 +-- public/javascripts/tree_changes.js | 96 ++++++++++++++++++++++++++++ public/javascripts/tree_mutations.js | 86 ------------------------- services/sync.js | 5 ++ views/index.ejs | 2 +- 7 files changed, 113 insertions(+), 98 deletions(-) create mode 100644 public/javascripts/tree_changes.js delete mode 100644 public/javascripts/tree_mutations.js diff --git a/public/javascripts/context_menu.js b/public/javascripts/context_menu.js index c0c4fed9f..c863eddf1 100644 --- a/public/javascripts/context_menu.js +++ b/public/javascripts/context_menu.js @@ -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); diff --git a/public/javascripts/drag_and_drop.js b/public/javascripts/drag_and_drop.js index 1b681a1e3..f6f167691 100644 --- a/public/javascripts/drag_and_drop.js +++ b/public/javascripts/drag_and_drop.js @@ -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); diff --git a/public/javascripts/note_tree.js b/public/javascripts/note_tree.js index 862d79b29..64fea6184 100644 --- a/public/javascripts/note_tree.js +++ b/public/javascripts/note_tree.js @@ -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 => { diff --git a/public/javascripts/tree_changes.js b/public/javascripts/tree_changes.js new file mode 100644 index 000000000..59b762555 --- /dev/null +++ b/public/javascripts/tree_changes.js @@ -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 + }; +})(); \ No newline at end of file diff --git a/public/javascripts/tree_mutations.js b/public/javascripts/tree_mutations.js deleted file mode 100644 index ea6dc2468..000000000 --- a/public/javascripts/tree_mutations.js +++ /dev/null @@ -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'); - } - }); - } -} \ No newline at end of file diff --git a/services/sync.js b/services/sync.js index 142d12cb2..94b53fd01 100644 --- a/services/sync.js +++ b/services/sync.js @@ -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); diff --git a/views/index.ejs b/views/index.ejs index b2a70f817..b7b9f61a8 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -264,7 +264,7 @@ - +