| 
									
										
										
										
											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 15:10:49 +01:00
										 |  |  |         node.setSelected(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const selectedNodes = treeService.getSelectedNodes().map(node => { | 
					
						
							|  |  |  |             return { | 
					
						
							|  |  |  |                 noteId: node.data.noteId, | 
					
						
							|  |  |  |                 title: node.data.title | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-12 13:05:09 +01:00
										 |  |  |         // this is for dragging notes into relation map
 | 
					
						
							| 
									
										
										
										
											2018-11-12 15:10:49 +01:00
										 |  |  |         data.dataTransfer.setData("text", JSON.stringify(selectedNodes)); | 
					
						
							| 
									
										
										
										
											2018-11-12 13:05:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-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; |