"].join(""));
if (parentNode) {
var lastChildNode;
if (isLastChild) {
lastChildNode = a.getLastChildNode(parentNode);
}else {
lastChildNode = parentNode;
}
v.find("tbody tr[id="+lastChildNode.id+"]").after(str);
}else{
v.find("tbody").append(str);
}
l && (a.addNodes(v, n, n.children, false)), a.spreadGird(str, n, v.selector), i.drag && a.drag(str, n);
a.changed(str, n)
})
}, i.prototype.removeNodes = function(v, treeNode){
var a = this, i = a.options, nt = tt[i.elem];
delete nt.mapping[treeNode.id];
var trNode = v.find("tbody tr[id="+treeNode.id+"]");
trNode.remove();
for (var i = 0; i < treeNode.nodes.length; i++){
a.removeNodes(v, nt.mapping[treeNode.nodes[i].id])
}
}, i.prototype.expandNode = function (nt, node, v, a, isOpened, sonSign){
var treeNode = nt.mapping[node.id];
var e = v.find("tbody tr[id=" + treeNode.id + "]");
var r = (a.options, e.find(".layui-tree-spread"));
if (isOpened){
if (!treeNode.isOpened) o(r).trigger("click");
}else{
if (treeNode.isOpened) o(r).trigger("click");
}
if (sonSign) {
for (var key in nt.mapping) {
var childNode = nt.mapping[key];
if (childNode.parentId == node.id) {
if (isOpened){
if (!childNode.isOpened) o(v.find("tbody tr[id=" + childNode.id + "]").find(".layui-tree-spread")).trigger("click");
}else{
if (treeNode.isOpened) o(v.find("tbody tr[id=" + childNode.id + "]").find(".layui-tree-spread")).trigger("click");
}
}
}
}
}, e("treetable", function(e) {
var r = new i(e = e || {}),
telem = o(e.elem);
var v = r.initGird(telem);
layui.addcss("modules/treetable/treetable.css");
var funs = {
getNode : function(idValue){
if (!idValue) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == idValue) {
return treeNode.item;
}
}
}, getNodeByParam : function(key, value, parentNode){
if (key == null || value == null) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var arr = new Array();
for (var k in nt.mapping) {
var treeNode = nt.mapping[k];
if (treeNode.item[key] == value) {
var node = parentNode == null ? arr.push(treeNode.item):(parentNode.id == treeNode.parent.id ? arr.push(treeNode.item) : null);
return node;
}
}
return arr;
}, getNodesByParam : function(key, value, parentNode){
if (key == null || value == null) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var arr = new Array();
for (var k in nt.mapping) {
var treeNode = nt.mapping[k];
if (treeNode.item[key] == value) {
parentNode == null ? arr.push(treeNode.item):(parentNode.id == treeNode.parent.id ? arr.push(treeNode.item) : null);
}
}
return arr;
}, getNodes : function(){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
}
return arr;
},addNode : function(parentNode, newNodes){
var i = r.options,
n = a || i.nodes,
nt = tt[v.selector];
var arr = [];
if (!Array.isArray(newNodes)){
arr.push(newNodes)
}else{
arr = newNodes;
}
var treeTable = new TreeTable();
r.traverseModel(treeTable, parentNode? nt.mapping[parentNode.id]:nt.mapping['root'], newNodes, ['children']);
for (var tttt in treeTable.mapping){
if ('root' == tttt) continue;
nt.mapping[tttt] = treeTable.mapping[tttt];
}
r.addNodes(v, parentNode, arr, true);
f.render();
},editNodeName : function(node){
var i = r.options, n = a || i.nodes, nt = tt[v.selector];
var treeNode = nt.mapping[node.id];
treeNode.item = node;
var trNode = v.find("tbody tr[id="+node.id+"] td li a cite");
trNode.text(node.name);
f.render();
},removeNode : function(node){
var i = r.options, n = a || i.nodes, nt = tt[v.selector];
var treeNode = nt.mapping[node.id];
r.removeNodes(v, treeNode);
f.render();
},getSelected : function() {
var arr = new Array();
var nt = tt[v.selector]
o(e.elem).find("input[type=checkbox]:checked").each(function(index, v) {
var treeNode = nt.mapping[v.value];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
});
return arr;
},getUnSelected : function() {
var arr = new Array();
var nt = tt[v.selector]
o(e.elem).find("input[type=checkbox]:not(:checked)").each(function(index, v) {
var treeNode = nt.mapping[v.value];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
});
return arr;
},expand : function() {
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == 'root') continue;
var isOpened = treeNode.isOpened;
if (isOpened) continue;
var e = o('#' + treeNode.id),
r = (a.options, e.find(".layui-tree-spread")),
ri = e.find(".layui-tree-branch");
oi.expand(treeNode, !isOpened, e);
isOpened ? (e.data("spread", null), r.html(t.arrow[0]), ri.removeClass(t.branch[1]), ri.addClass(t.branch[0])) : (e.data("spread", !0), r.html(t.arrow[1]), ri.removeClass(t.branch[0]), ri.addClass(t.branch[1]))
treeNode.isOpened = !isOpened;
}
},collapse : function() {
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == 'root') continue;
var isOpened = treeNode.isOpened;
if (!isOpened) continue;
var e = o('#' + treeNode.id),
r = (a.options, e.find(".layui-tree-spread")),
ri = e.find(".layui-tree-branch");
oi.expand(treeNode, !isOpened, e);
isOpened ? (e.data("spread", null), r.html(t.arrow[0]), ri.removeClass(t.branch[1]), ri.addClass(t.branch[0])) : (e.data("spread", !0), r.html(t.arrow[1]), ri.removeClass(t.branch[0]), ri.addClass(t.branch[1]))
treeNode.isOpened = !isOpened;
}
}, destory : function (){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var treeO = o(v.selector);
if (treeO) treeO.empty(), delete tt[v.selector];
}, expandNode : function(node, sonSign){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
r.expandNode(nt, node, v, a, true, sonSign);
}, collapseNode : function(node, sonSign){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
r.expandNode(nt, node, v, a, false, sonSign);
}, checkNode : function (node, check){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var ck = v.find("tbody tr[id=" + node.id + "] ");
ck.find('input[type=checkbox]').attr("checked", check);
ck.find('input[type=checkbox]')[0].checked = check;
check ? ck.find('.layui-form-checkbox').addClass('layui-form-checked') : ck.find('.layui-form-checkbox').removeClass('layui-form-checked')
}, setChkDisabled : function(node, disabled){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var ck = v.find("tbody tr[id=" + node.id + "] ");
ck.find('input[type=checkbox]').attr("disabled",disabled);
disabled ? ck.find('.layui-form-checkbox').addClass('layui-checkbox-disbaled layui-disabled') : ck.find('.layui-form-checkbox').removeClass('layui-checkbox-disbaled layui-disabled');
}, checkAllNodes : function(check){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode && treeNode.item && treeNode.id != 'root'){
var ck = v.find("tbody tr[id=" + treeNode.id + "] ");
ck.find('input[type=checkbox]').attr("checked", check);
ck.find('input[type=checkbox]')[0].checked = check;
check ? ck.find('.layui-form-checkbox').addClass('layui-form-checked') : ck.find('.layui-form-checkbox').removeClass('layui-form-checked')
}
}
var all = v.find('thead input[type="checkbox"]');
all.attr("checked", check);
all[0].checked = check;
check ? all.parents('tr').find('.layui-form-checkbox').addClass('layui-form-checked') : all.parents('tr').find('.layui-form-checkbox').removeClass('layui-form-checked')
}
}
for (var key in funs){
v[key] = funs[key];
}
if (e.callback) {
v.onCheck = e.callback.onCheck;
}
return telem[0] ? v : a.error("layui.tree 没有找到" + e.elem + "元素");
})
});