fix order of pasted notes when doing multi-select operations

This commit is contained in:
azivner 2018-01-19 18:34:21 -05:00
parent fcd11c341c
commit f42835e083
2 changed files with 10 additions and 12 deletions

View File

@ -6,20 +6,18 @@ const contextMenu = (function() {
let clipboardIds = []; let clipboardIds = [];
let clipboardMode = null; let clipboardMode = null;
function pasteAfter(node) { async function pasteAfter(node) {
if (clipboardMode === 'cut') { if (clipboardMode === 'cut') {
for (const nodeKey of clipboardIds) { const nodes = clipboardIds.map(nodeKey => treeUtils.getNodeByKey(nodeKey));
const subjectNode = treeUtils.getNodeByKey(nodeKey);
treeChanges.moveAfterNode([subjectNode], node); await treeChanges.moveAfterNode(nodes, node);
}
clipboardIds = []; clipboardIds = [];
clipboardMode = null; clipboardMode = null;
} }
else if (clipboardMode === 'copy') { else if (clipboardMode === 'copy') {
for (const noteId of clipboardIds) { for (const noteId of clipboardIds) {
cloning.cloneNoteAfter(noteId, node.data.note_tree_id); await cloning.cloneNoteAfter(noteId, node.data.note_tree_id);
} }
// copy will keep clipboardIds and clipboardMode so it's possible to paste into multiple places // copy will keep clipboardIds and clipboardMode so it's possible to paste into multiple places
@ -32,20 +30,18 @@ const contextMenu = (function() {
} }
} }
function pasteInto(node) { async function pasteInto(node) {
if (clipboardMode === 'cut') { if (clipboardMode === 'cut') {
for (const nodeKey of clipboardIds) { const nodes = clipboardIds.map(nodeKey => treeUtils.getNodeByKey(nodeKey));
const subjectNode = treeUtils.getNodeByKey(nodeKey);
treeChanges.moveToNode([subjectNode], node); await treeChanges.moveToNode(nodes, node);
}
clipboardIds = []; clipboardIds = [];
clipboardMode = null; clipboardMode = null;
} }
else if (clipboardMode === 'copy') { else if (clipboardMode === 'copy') {
for (const noteId of clipboardIds) { for (const noteId of clipboardIds) {
cloning.cloneNoteTo(noteId, node.data.note_id); await cloning.cloneNoteTo(noteId, node.data.note_id);
} }
// copy will keep clipboardIds and clipboardMode so it's possible to paste into multiple places // copy will keep clipboardIds and clipboardMode so it's possible to paste into multiple places
} }

View File

@ -15,6 +15,8 @@ const treeChanges = (function() {
} }
async function moveAfterNode(nodesToMove, afterNode) { async function moveAfterNode(nodesToMove, afterNode) {
nodesToMove.reverse(); // need to reverse to keep the note order
for (const nodeToMove of nodesToMove) { for (const nodeToMove of nodesToMove) {
const resp = await server.put('tree/' + nodeToMove.data.note_tree_id + '/move-after/' + afterNode.data.note_tree_id); const resp = await server.put('tree/' + nodeToMove.data.note_tree_id + '/move-after/' + afterNode.data.note_tree_id);