mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
drag & drop support for multi select plus some fixes
This commit is contained in:
parent
3f976a3821
commit
e560072f8b
@ -46,14 +46,19 @@ const dragAndDropSetup = {
|
|||||||
// This function MUST be defined to enable dropping of items on the tree.
|
// This function MUST be defined to enable dropping of items on the tree.
|
||||||
// data.hitMode is 'before', 'after', or 'over'.
|
// data.hitMode is 'before', 'after', or 'over'.
|
||||||
|
|
||||||
|
const nodeToMove = data.otherNode;
|
||||||
|
nodeToMove.setSelected(true);
|
||||||
|
|
||||||
|
const selectedNodes = noteTree.getSelectedNodes();
|
||||||
|
|
||||||
if (data.hitMode === "before") {
|
if (data.hitMode === "before") {
|
||||||
treeChanges.moveBeforeNode(data.otherNode, node);
|
treeChanges.moveBeforeNode(selectedNodes, node);
|
||||||
}
|
}
|
||||||
else if (data.hitMode === "after") {
|
else if (data.hitMode === "after") {
|
||||||
treeChanges.moveAfterNode(data.otherNode, node);
|
treeChanges.moveAfterNode(selectedNodes, node);
|
||||||
}
|
}
|
||||||
else if (data.hitMode === "over") {
|
else if (data.hitMode === "over") {
|
||||||
treeChanges.moveToNode(data.otherNode, node);
|
treeChanges.moveToNode(selectedNodes, node);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Exception("Unknown hitMode=" + data.hitMode);
|
throw new Exception("Unknown hitMode=" + data.hitMode);
|
||||||
|
@ -405,24 +405,32 @@ const noteTree = (function() {
|
|||||||
const beforeNode = node.getPrevSibling();
|
const beforeNode = node.getPrevSibling();
|
||||||
|
|
||||||
if (beforeNode !== null) {
|
if (beforeNode !== null) {
|
||||||
treeChanges.moveBeforeNode(node, beforeNode);
|
treeChanges.moveBeforeNode([node], beforeNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"ctrl+down": node => {
|
"ctrl+down": node => {
|
||||||
let afterNode = node.getNextSibling();
|
let afterNode = node.getNextSibling();
|
||||||
if (afterNode !== null) {
|
if (afterNode !== null) {
|
||||||
treeChanges.moveAfterNode(node, afterNode);
|
treeChanges.moveAfterNode([node], afterNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"ctrl+left": node => {
|
"ctrl+left": node => {
|
||||||
treeChanges.moveNodeUpInHierarchy(node);
|
treeChanges.moveNodeUpInHierarchy(node);
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"ctrl+right": node => {
|
"ctrl+right": node => {
|
||||||
let toNode = node.getPrevSibling();
|
let toNode = node.getPrevSibling();
|
||||||
|
|
||||||
if (toNode !== null) {
|
if (toNode !== null) {
|
||||||
treeChanges.moveToNode(node, toNode);
|
treeChanges.moveToNode([node], toNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"shift+up": node => {
|
"shift+up": node => {
|
||||||
node.navigate($.ui.keyCode.UP, true).then(() => {
|
node.navigate($.ui.keyCode.UP, true).then(() => {
|
||||||
@ -434,6 +442,8 @@ const noteTree = (function() {
|
|||||||
|
|
||||||
currentNode.setSelected(true);
|
currentNode.setSelected(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"shift+down": node => {
|
"shift+down": node => {
|
||||||
node.navigate($.ui.keyCode.DOWN, true).then(() => {
|
node.navigate($.ui.keyCode.DOWN, true).then(() => {
|
||||||
@ -445,6 +455,8 @@ const noteTree = (function() {
|
|||||||
|
|
||||||
currentNode.setSelected(true);
|
currentNode.setSelected(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
"f2": node => {
|
"f2": node => {
|
||||||
editTreePrefix.showDialog(node);
|
editTreePrefix.showDialog(node);
|
||||||
|
@ -1,16 +1,20 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const treeChanges = (function() {
|
const treeChanges = (function() {
|
||||||
async function moveBeforeNode(node, beforeNode) {
|
async function moveBeforeNode(nodesToMove, beforeNode) {
|
||||||
await server.put('notes/' + node.data.note_tree_id + '/move-before/' + beforeNode.data.note_tree_id);
|
for (const nodeToMove of nodesToMove) {
|
||||||
|
await server.put('notes/' + nodeToMove.data.note_tree_id + '/move-before/' + beforeNode.data.note_tree_id);
|
||||||
|
|
||||||
changeNode(node, node => node.moveTo(beforeNode, 'before'));
|
changeNode(nodeToMove, node => node.moveTo(beforeNode, 'before'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function moveAfterNode(node, afterNode) {
|
async function moveAfterNode(nodesToMove, afterNode) {
|
||||||
await server.put('notes/' + node.data.note_tree_id + '/move-after/' + afterNode.data.note_tree_id);
|
for (const nodeToMove of nodesToMove) {
|
||||||
|
await server.put('notes/' + nodeToMove.data.note_tree_id + '/move-after/' + afterNode.data.note_tree_id);
|
||||||
|
|
||||||
changeNode(node, node => node.moveTo(afterNode, 'after'));
|
changeNode(nodeToMove, node => node.moveTo(afterNode, 'after'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// beware that first arg is noteId and second is noteTreeId!
|
// beware that first arg is noteId and second is noteTreeId!
|
||||||
@ -25,19 +29,21 @@ const treeChanges = (function() {
|
|||||||
await noteTree.reload();
|
await noteTree.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function moveToNode(node, toNode) {
|
async function moveToNode(nodesToMove, toNode) {
|
||||||
await server.put('notes/' + node.data.note_tree_id + '/move-to/' + toNode.data.note_id);
|
for (const nodeToMove of nodesToMove) {
|
||||||
|
await server.put('notes/' + nodeToMove.data.note_tree_id + '/move-to/' + toNode.data.note_id);
|
||||||
|
|
||||||
changeNode(node, node => {
|
changeNode(nodeToMove, node => {
|
||||||
// first expand which will force lazy load and only then move the node
|
// first expand which will force lazy load and only then move the node
|
||||||
// if this is not expanded before moving, then lazy load won't happen because it already contains node
|
// if this is not expanded before moving, then lazy load won't happen because it already contains node
|
||||||
toNode.setExpanded(true);
|
toNode.setExpanded(true);
|
||||||
|
|
||||||
node.moveTo(toNode);
|
node.moveTo(toNode);
|
||||||
|
|
||||||
toNode.folder = true;
|
toNode.folder = true;
|
||||||
toNode.renderTitle();
|
toNode.renderTitle();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function cloneNoteTo(childNoteId, parentNoteId, prefix) {
|
async function cloneNoteTo(childNoteId, parentNoteId, prefix) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user