2017-12-19 9 views
0

어떻게하면 fancytree의 노드를 트리의 새 위치로 드래그 한 후 다시 원래 위치로 되돌리려합니까? 예를 들어 노드를 새 위치로 떨어 뜨린 후 사용자가 다시 돌아 오지 않는다고 말하면 오브젝트를 이동하기위한 확인 대화 상자가 예 또는 아니오로 표시되어 드롭에 다시 표시된 새 대상으로 이동할 필요가 있지만 확인을하고 예 또는 아니오로 되돌립니다. 또는 드래그 시작 위치를 얻고 드래그 드롭을 원래 위치로 되돌립니다.fancytree 드래그 앤 드롭 노드 원래 위치로 되돌아 가기

$("#tree").fancytree({ 
extensions: ["dnd"], 

// .. other options... 

dnd: { 
    autoExpandMS: 400, 
    draggable: { // modify default jQuery draggable options 
    zIndex: 1000, 
    scroll: false, 
    containment: "parent", 
    revert: "invalid" 
    }, 
    preventRecursiveMoves: true, // Prevent dropping nodes on own descendants 
    preventVoidMoves: true, // Prevent dropping nodes 'before self', etc. 

    dragStart: function(node, data) { 
    // This function MUST be defined to enable dragging for the tree. 
    // Return false to cancel dragging of node. 
    // if(data.originalEvent.shiftKey) ...   
    // if(node.isFolder()) { return false; } 
    return true; 
    }, 
    dragEnter: function(node, data) { 
    return true; 
    }, 
    dragExpand: function(node, data) { 
    // return false to prevent auto-expanding data.node on hover 
    }, 
    dragOver: function(node, data) { 
    }, 
    dragLeave: function(node, data) { 
    }, 
    dragStop: function(node, data) { 
    }, 
    dragDrop: function(node, data) { 
    // revert node to back to it's original place 
    data.otherNode.moveTo(node, data.hitMode); 
    } 
} 

});

답변

0

은 내가 fancytree에서 근무했습니다 이후 오랜만이야, 그래서 자세한 내용을 모르지만, 난 그 일 가능성이있는 아이디어를 제공 할 수 있다고 생각 :

노드를 삭제하면 이 작업을 수행해야합니다 떨어져

  • 불 (당신이 형제의 위치를 ​​유지하려면 node.data.prevParent = node.parent() 또는 prevSibling)

    • 이 node.data에서 원래 위치를 지속하여 옵션 2 개를 사용하여 대화 상자를 열고 노드 참조를 전달하십시오.

    귀하의 대화 basicly 2 개 옵션이 있습니다

    • 수락 : node.data.prevParent을 삭제하고 닫습니다 대화
    • 거부 ​​: node.data.prevParent를 검색하고 새 자식/형제로 노드를 이동합니다. 나중에 대화 상자를 닫으십시오.

    조금 도움이 되었기를 바랍니다. 당신이 그것을 발견하지 못했을 경우를 대비해서 : 이것은 또한 도움이된다 : fancytree documentation