Renamed /src to /frontend
This commit is contained in:
68
frontend/components/Tree/Tree.js
Normal file
68
frontend/components/Tree/Tree.js
Normal file
@ -0,0 +1,68 @@
|
||||
var Tree = require('js-tree');
|
||||
var proto = Tree.prototype;
|
||||
|
||||
proto.updateNodesPosition = function() {
|
||||
var top = 1;
|
||||
var left = 1;
|
||||
var root = this.getIndex(1);
|
||||
var self = this;
|
||||
|
||||
root.top = top++;
|
||||
root.left = left++;
|
||||
|
||||
if(root.children && root.children.length) {
|
||||
walk(root.children, root, left, root.node.collapsed);
|
||||
}
|
||||
|
||||
function walk(children, parent, left, collapsed) {
|
||||
var height = 1;
|
||||
children.forEach(function(id) {
|
||||
var node = self.getIndex(id);
|
||||
if(collapsed) {
|
||||
node.top = null;
|
||||
node.left = null;
|
||||
} else {
|
||||
node.top = top++;
|
||||
node.left = left;
|
||||
}
|
||||
|
||||
if(node.children && node.children.length) {
|
||||
height += walk(node.children, node, left+1, collapsed || node.node.collapsed);
|
||||
} else {
|
||||
node.height = 1;
|
||||
height += 1;
|
||||
}
|
||||
});
|
||||
|
||||
if(parent.node.collapsed) parent.height = 1;
|
||||
else parent.height = height;
|
||||
return parent.height;
|
||||
}
|
||||
};
|
||||
|
||||
proto.move = function(fromId, toId, placement) {
|
||||
if(fromId === toId || toId === 1) return;
|
||||
|
||||
var obj = this.remove(fromId);
|
||||
var index = null;
|
||||
|
||||
if(placement === 'before') index = this.insertBefore(obj, toId);
|
||||
else if(placement === 'after') index = this.insertAfter(obj, toId);
|
||||
else if(placement === 'prepend') index = this.prepend(obj, toId);
|
||||
else if(placement === 'append') index = this.append(obj, toId);
|
||||
|
||||
// todo: perf
|
||||
this.updateNodesPosition();
|
||||
return index;
|
||||
};
|
||||
|
||||
proto.getNodeByTop = function(top) {
|
||||
var indexes = this.indexes;
|
||||
for(var id in indexes) {
|
||||
if(indexes.hasOwnProperty(id)) {
|
||||
if(indexes[id].top === top) return indexes[id];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Tree;
|
Reference in New Issue
Block a user