| 
									
										
										
										
											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, | 
					
						
							|  |  |  |     draggable: { // modify default jQuery draggable options
 | 
					
						
							|  |  |  |         zIndex: 1000, | 
					
						
							|  |  |  |         scroll: false, | 
					
						
							|  |  |  |         containment: "parent", | 
					
						
							|  |  |  |         revert: "invalid" | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2017-12-23 17:18:51 -05:00
										 |  |  |     focusOnClick: true, | 
					
						
							| 
									
										
										
										
											2017-09-09 12:06:15 -04:00
										 |  |  |     preventRecursiveMoves: true, // Prevent dropping nodes on own descendants
 | 
					
						
							|  |  |  |     preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-09 18:53:11 -04:00
										 |  |  |     dragStart: (node, data) => { | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2017-10-09 18:53:11 -04:00
										 |  |  |     dragEnter: (node, data) => { | 
					
						
							| 
									
										
										
										
											2017-09-09 12:06:15 -04:00
										 |  |  |         /* data.otherNode may be null for non-fancytree droppables. | 
					
						
							|  |  |  |         * Return false to disallow dropping on node. In this case | 
					
						
							|  |  |  |         * dragOver and dragLeave are not called. | 
					
						
							|  |  |  |         * Return 'over', 'before, or 'after' to force a hitMode. | 
					
						
							|  |  |  |         * Return ['before', 'after'] to restrict available hitModes. | 
					
						
							|  |  |  |         * Any other return value will calc the hitMode from the cursor position. | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         // Prevent dropping a parent below another parent (only sort
 | 
					
						
							|  |  |  |         // nodes under the same parent):
 | 
					
						
							|  |  |  |         //    if(node.parent !== data.otherNode.parent){
 | 
					
						
							|  |  |  |         //      return false;
 | 
					
						
							|  |  |  |         //    }
 | 
					
						
							|  |  |  |         // Don't allow dropping *over* a node (would create a child). Just
 | 
					
						
							|  |  |  |         // allow changing the order:
 | 
					
						
							|  |  |  |         //    return ["before", "after"];
 | 
					
						
							|  |  |  |         // Accept everything:
 | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2017-10-09 18:53:11 -04:00
										 |  |  |     dragExpand: (node, data) => { | 
					
						
							| 
									
										
										
										
											2017-09-09 12:06:15 -04:00
										 |  |  |         // return false to prevent auto-expanding data.node on hover
 | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2017-10-09 18:53:11 -04:00
										 |  |  |     dragOver: (node, data) => {}, | 
					
						
							|  |  |  |     dragLeave: (node, data) => {}, | 
					
						
							|  |  |  |     dragStop: (node, data) => {}, | 
					
						
							|  |  |  |     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 { | 
					
						
							|  |  |  |             throw new Exception("Unknown hitMode=" + data.hitMode); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default dragAndDropSetup; |