2018-03-25 13:41:29 -04:00
|
|
|
import treeService from './tree.js';
|
2018-04-01 20:33:10 -04:00
|
|
|
import treeChangesService from './branches.js';
|
2018-03-25 11:09:17 -04:00
|
|
|
|
2017-09-09 12:06:15 -04:00
|
|
|
const dragAndDropSetup = {
|
|
|
|
|
autoExpandMS: 600,
|
2017-10-09 18:53:11 -04:00
|
|
|
dragStart: (node, data) => {
|
2018-10-21 22:42:20 +02:00
|
|
|
if (node.data.noteId === 'root') {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-12 13:05:09 +01:00
|
|
|
// this is for dragging notes into relation map
|
|
|
|
|
data.dataTransfer.setData("text", JSON.stringify({
|
|
|
|
|
noteId: node.data.noteId,
|
|
|
|
|
title: node.data.title
|
|
|
|
|
}));
|
|
|
|
|
|
2017-09-09 12:06:15 -04:00
|
|
|
// This function MUST be defined to enable dragging for the tree.
|
|
|
|
|
// Return false to cancel dragging of node.
|
|
|
|
|
return true;
|
|
|
|
|
},
|
2018-11-12 13:05:09 +01:00
|
|
|
dragEnter: (node, data) => {
|
|
|
|
|
// we don't allow moving root to any other location in the tree
|
|
|
|
|
// we allow it to be placed on the relation map though, that's handled in a different drop handler
|
|
|
|
|
return node.data.noteId === 'root';
|
|
|
|
|
}, // allow drop on any node
|
2017-10-09 18:53:11 -04:00
|
|
|
dragDrop: (node, data) => {
|
2017-09-09 12:06:15 -04:00
|
|
|
// This function MUST be defined to enable dropping of items on the tree.
|
|
|
|
|
// data.hitMode is 'before', 'after', or 'over'.
|
|
|
|
|
|
2018-01-01 18:29:06 -05:00
|
|
|
const nodeToMove = data.otherNode;
|
|
|
|
|
nodeToMove.setSelected(true);
|
|
|
|
|
|
2018-03-24 21:39:15 -04:00
|
|
|
const selectedNodes = treeService.getSelectedNodes();
|
2018-01-01 18:29:06 -05:00
|
|
|
|
2017-09-09 12:06:15 -04:00
|
|
|
if (data.hitMode === "before") {
|
2018-03-25 13:41:29 -04:00
|
|
|
treeChangesService.moveBeforeNode(selectedNodes, node);
|
2017-09-09 12:06:15 -04:00
|
|
|
}
|
|
|
|
|
else if (data.hitMode === "after") {
|
2018-03-25 13:41:29 -04:00
|
|
|
treeChangesService.moveAfterNode(selectedNodes, node);
|
2017-09-09 12:06:15 -04:00
|
|
|
}
|
|
|
|
|
else if (data.hitMode === "over") {
|
2018-03-25 13:41:29 -04:00
|
|
|
treeChangesService.moveToNode(selectedNodes, node);
|
2017-09-09 12:06:15 -04:00
|
|
|
}
|
|
|
|
|
else {
|
2018-11-05 21:42:29 +01:00
|
|
|
throw new Error("Unknown hitMode=" + data.hitMode);
|
2017-09-09 12:06:15 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
2018-03-25 11:09:17 -04:00
|
|
|
|
|
|
|
|
export default dragAndDropSetup;
|