CirclonGroup / angular-tree-component

A simple yet powerful tree component for Angular (>=2)

Home Page:https://angular2-tree.readme.io/docs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to swap two nodes?

rootspain opened this issue · comments

I want to override drop function.

treeOptions:ITreeOptions = {
actionMapping: {
drop: (tree:TreeModel, node:TreeNode, $event:any, {from, to}) => {
if (to.dropOnNode==undefined) {
TREE_ACTIONS.MOVE_NODE(tree,node,$event,{from,to});
} else {
let tmpFrom = tree.getNodeBy((x: TreeNode) => {
return x.index === from.index;
});
let tmpTo = tree.getNodeBy((x: TreeNode) => {
return x.index === node.index;
});
let tmp = tmpFrom.data;
tmpFrom.data = tmpTo.data;
tmpTo.data = tmp;
/* also not work
let idx = node.index;
node.index = from.index;
from.index = idx;
*/
tree.update();
}
}
}

I solve it by swaping in the source dataset;

        let fromIdx = this.treeItems.findIndex(x=>x.id==from.data.id);
        let toIdx = this.treeItems.findIndex(x=>x.id==node.data.id);
        let tmp = this.treeItems[fromIdx];
        this.treeItems[fromIdx] = this.treeItems[toIdx];
        this.treeItems[toIdx] = tmp;
        tree.update();