Commit 2cb6da4f by Swifly Committed by stylefeng

!38 更新treetable 发现之前的方案如果数据量较大性能太差 随另写了jquery.treegrid.js部分功能


更新treetable

发现之前的方案如果数据量较大性能太差

随另写了jquery.treegrid.js部分功能

另外,获取选择行时不再只有id,同时还有列表上所有列的数据。是的,没看错,是表格上的数据,不是后台返回的原数据
parent 44074919
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<link href="${ctxPath}/static/css/plugins/iCheck/custom.css" rel="stylesheet"> <link href="${ctxPath}/static/css/plugins/iCheck/custom.css" rel="stylesheet">
<link href="${ctxPath}/static/css/plugins/webuploader/webuploader.css" rel="stylesheet"> <link href="${ctxPath}/static/css/plugins/webuploader/webuploader.css" rel="stylesheet">
<link href="${ctxPath}/static/css/plugins/ztree/zTreeStyle.css" rel="stylesheet"> <link href="${ctxPath}/static/css/plugins/ztree/zTreeStyle.css" rel="stylesheet">
<link href="${ctxPath}/static/css/plugins/jquery-treegrid/css/jquery.treegrid.css" rel="stylesheet"/> <link href="${ctxPath}/static/css/plugins/bootstrap-treetable/bootstrap-treetable.css" rel="stylesheet"/>
<!-- <link href="${ctxPath}/static/css/plugins/ztree/demo.css" rel="stylesheet"> --> <!-- <link href="${ctxPath}/static/css/plugins/ztree/demo.css" rel="stylesheet"> -->
<!-- 全局js --> <!-- 全局js -->
...@@ -30,9 +30,7 @@ ...@@ -30,9 +30,7 @@
<script src="${ctxPath}/static/js/plugins/validate/zh_CN.js"></script> <script src="${ctxPath}/static/js/plugins/validate/zh_CN.js"></script>
<script src="${ctxPath}/static/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script> <script src="${ctxPath}/static/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js"></script>
<script src="${ctxPath}/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script> <script src="${ctxPath}/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="${ctxPath}/static/js/plugins/jquery-treegrid/js/jquery.treegrid.min.js"></script> <script src="${ctxPath}/static/js/plugins/bootstrap-treetable/bootstrap-treetable.js"></script>
<script src="${ctxPath}/static/js/plugins/jquery-treegrid/js/jquery.treegrid.bootstrap3.js"></script>
<script src="${ctxPath}/static/js/plugins/jquery-treegrid/extension/jquery.treegrid.extension.js"></script>
<script src="${ctxPath}/static/js/plugins/layer/layer.min.js"></script> <script src="${ctxPath}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctxPath}/static/js/plugins/chosen/chosen.jquery.js"></script> <script src="${ctxPath}/static/js/plugins/chosen/chosen.jquery.js"></script>
<script src="${ctxPath}/static/js/plugins/iCheck/icheck.min.js"></script> <script src="${ctxPath}/static/js/plugins/iCheck/icheck.min.js"></script>
......
.treetable-indent {width:16px; height: 16px; display: inline-block; position: relative;}
.treetable-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;}
.treetable-selected{background: #f5f5f5 !important;}
.treetable-table{border:0 !important;margin-bottom:0}
.treetable-table tbody {display:block;height:auto;overflow-y:auto;}
.treetable-table thead, .treetable-table tbody tr {display:table;width:100%;table-layout:fixed;}
.treetable-thead th{line-height:40px;border: 0 !important;background:#fff !important;border-radius: 4px;border-left:1px solid #e7eaec !important;border-bottom:2px solid #e7eaec !important;text-align: center;}
.treetable-thead tr :first-child{border-left:0 !important}
.treetable-tbody td{border: 0 !important;border-left:1px solid #e7eaec !important;border-bottom:1px solid #e7eaec !important;}
.treetable-tbody tr :first-child{border-left:0 !important}
.treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;}
.treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;}
.treegrid-expander-expanded{background-image: url(../img/collapse.png); }
.treegrid-expander-collapsed{background-image: url(../img/expand.png);}
.treegrid-selected{background: #f5f5f5 !important;}
.treegrid-table{border:0 !important;margin-bottom:0}
.treegrid-table tbody {display:block;height:auto;overflow-y:auto;}
.treegrid-table thead, .treegrid-table tbody tr {display:table;width:100%;table-layout:fixed;}
.treegrid-thead th{line-height:40px;border: 0 !important;background:#fff !important;border-radius: 4px;border-left:1px solid #e7eaec !important;border-bottom:2px solid #e7eaec !important;text-align: center;}
.treegrid-thead tr :first-child{border-left:0 !important}
.treegrid-tbody td{border: 0 !important;border-left:1px solid #e7eaec !important;border-bottom:1px solid #e7eaec !important;}
.treegrid-tbody tr :first-child{border-left:0 !important}
...@@ -2,21 +2,21 @@ ...@@ -2,21 +2,21 @@
"use strict"; "use strict";
$.fn.bootstrapTreeTable = function(options, param) { $.fn.bootstrapTreeTable = function(options, param) {
var allData = null;//用于存放格式化后的数据
// 如果是调用方法 // 如果是调用方法
if (typeof options == 'string') { if (typeof options == 'string') {
return $.fn.bootstrapTreeTable.methods[options](this, param); return $.fn.bootstrapTreeTable.methods[options](this, param);
} }
// 如果是初始化组件 // 如果是初始化组件
options = $.extend({}, $.fn.bootstrapTreeTable.defaults, options || {}); options = $.extend({}, $.fn.bootstrapTreeTable.defaults, options || {});
// 是否有radio或checkbox // 是否有radio或checkbox
var hasSelectItem = false; var hasSelectItem = false;
var target = $(this); var target = $(this);
// 在外层包装一下div,样式用的bootstrap-table的 // 在外层包装一下div,样式用的bootstrap-table的
var _main_div = $("<div class='fixed-table-container'></div>"); var _main_div = $("<div class='bootstrap-tree-table fixed-table-container'></div>");
target.before(_main_div); target.before(_main_div);
_main_div.append(target); _main_div.append(target);
target.addClass("table table-hover treegrid-table table-bordered"); target.addClass("table table-hover treetable-table table-bordered");
if (options.striped) { if (options.striped) {
target.addClass('table-striped'); target.addClass('table-striped');
} }
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
_tool_div.append(_tool_left_div); _tool_div.append(_tool_left_div);
_main_div.before(_tool_div); _main_div.before(_tool_div);
} }
// 得到根节点 // 格式化数据,优化性能
target.getRootNodes = function(data) { target.formatData=function(data){
// 指定Root节点值
var _root = options.rootCodeValue?options.rootCodeValue:null var _root = options.rootCodeValue?options.rootCodeValue:null
var result = [];
$.each(data, function(index, item) { $.each(data, function(index, item) {
// 添加一个默认属性,用来判断当前节点有没有被显示
item.isShow = false;
// 这里兼容几种常见Root节点写法 // 这里兼容几种常见Root节点写法
// 默认的几种判断 // 默认的几种判断
var _defaultRootFlag = item[options.parentCode] == '0' var _defaultRootFlag = item[options.parentCode] == '0'
...@@ -41,32 +41,45 @@ ...@@ -41,32 +41,45 @@
|| item[options.parentCode] == null || item[options.parentCode] == null
|| item[options.parentCode] == ''; || item[options.parentCode] == '';
if (!item[options.parentCode] || (_root?(item[options.parentCode] == options.rootCodeValue):_defaultRootFlag)){ if (!item[options.parentCode] || (_root?(item[options.parentCode] == options.rootCodeValue):_defaultRootFlag)){
result.push(item); if(!allData["_root_"]){allData["_root_"]=[];}
allData["_root_"].push(item);
}else{
if(!allData["_n_"+item[options.parentCode]]){allData["_n_"+item[options.parentCode]]=[];}
allData["_n_"+item[options.parentCode]].push(item);
} }
// 添加一个默认属性,用来判断当前节点有没有被显示
item.isShow = false;
}); });
return result; }
// 得到根节点
target.getRootNodes = function() {
return allData["_root_"];
}; };
var j = 0;
// 递归获取子节点并且设置子节点 // 递归获取子节点并且设置子节点
target.getChildNodes = function(data, parentNode, parentIndex, tbody) { target.handleNode = function(parentNode, lv, tbody) {
$.each(data, function(i, item) { var _ls = allData["_n_"+parentNode[options.code]];
if (item[options.parentCode] == parentNode[options.code]) { var tr = target.renderRow(parentNode,_ls?true:false,lv);
var tr = $('<tr></tr>'); tbody.append(tr);
var nowParentIndex = (parentIndex + (j++) + 1); if(_ls){
tr.addClass('treegrid-' + nowParentIndex); $.each(_ls, function(i, item) {
tr.addClass('treegrid-parent-' + parentIndex); target.handleNode(item, (lv + 1), tbody)
target.renderRow(tr,item); });
item.isShow = true; }
tbody.append(tr); };
target.getChildNodes(data, item, nowParentIndex, tbody)
}
});
};
// 绘制行 // 绘制行
target.renderRow = function(tr,item){ target.renderRow = function(item,isP,lv){
// 标记已显示
item.isShow = true;
var tr = $('<tr class="tg-'+item[options.parentCode]+'"></tr>');
var _icon = options.expanderCollapsedClass;
if(options.expandAll){
tr.css("display","table");
_icon = options.expanderExpandedClass;
}else if(options.expandFirst&&lv<=2){
tr.css("display","table");
_icon=(lv==1)?options.expanderExpandedClass:options.expanderCollapsedClass;
}else{
tr.css("display","none");
_icon = options.expanderCollapsedClass;
}
$.each(options.columns, function(index, column) { $.each(options.columns, function(index, column) {
// 判断有没有选择列 // 判断有没有选择列
if(index==0&&column.field=='selectItem'){ if(index==0&&column.field=='selectItem'){
...@@ -82,20 +95,33 @@ ...@@ -82,20 +95,33 @@
} }
tr.append(td); tr.append(td);
}else{ }else{
var td = $('<td style="'+((column.width)?('width:'+column.width):'')+'"></td>'); var td = $('<td title="'+item[column.field]+'" name="'+column.field+'" style="'+((column.width)?('width:'+column.width):'')+'"></td>');
// 增加formatter渲染 // 增加formatter渲染
if (column.formatter) { if (column.formatter) {
td.html(column.formatter.call(this, '', item, index)); td.html(column.formatter.call(this, item[column.field], item, index));
} else { } else {
td.text(item[column.field]); td.text(item[column.field]);
} }
if(options.expandColumn==index){
if(!isP){
td.prepend('<span class="treetable-expander"></span>')
}else{
td.prepend('<span class="treetable-expander '+_icon+'"></span>')
}
for (var int = 0; int < (lv-1); int++) {
td.prepend('<span class="treetable-indent"></span>')
}
}
tr.append(td); tr.append(td);
} }
}); });
return tr;
} }
// 加载数据 // 加载数据
target.load = function(parms){ target.load = function(parms){
// 加载数据前先清空 // 加载数据前先清空
allData = {};
// 加载数据前先清空
target.html(""); target.html("");
// 构造表头 // 构造表头
var thr = $('<tr></tr>'); var thr = $('<tr></tr>');
...@@ -106,16 +132,16 @@ ...@@ -106,16 +132,16 @@
hasSelectItem = true; hasSelectItem = true;
th = $('<th style="width:36px"></th>'); th = $('<th style="width:36px"></th>');
}else{ }else{
th = $('<th style="padding:10px;'+((item.width)?('width:'+item.width):'')+'"></th>'); th = $('<th style="'+((item.width)?('width:'+item.width):'')+'"></th>');
} }
th.text(item.title); th.text(item.title);
thr.append(th); thr.append(th);
}); });
var thead = $('<thead class="treegrid-thead"></thead>'); var thead = $('<thead class="treetable-thead"></thead>');
thead.append(thr); thead.append(thr);
target.append(thead); target.append(thead);
// 构造表体 // 构造表体
var tbody = $('<tbody class="treegrid-tbody"></tbody>'); var tbody = $('<tbody class="treetable-tbody"></tbody>');
target.append(tbody); target.append(tbody);
// 添加加载loading // 添加加载loading
var _loading = '<tr><td colspan="'+options.columns.length+'"><div style="display: block;text-align: center;">正在努力地加载数据中,请稍候……</div></td></tr>' var _loading = '<tr><td colspan="'+options.columns.length+'"><div style="display: block;text-align: center;">正在努力地加载数据中,请稍候……</div></td></tr>'
...@@ -137,34 +163,23 @@ ...@@ -137,34 +163,23 @@
tbody.html(_empty); tbody.html(_empty);
return; return;
} }
var rootNode = target.getRootNodes(data); // 格式化数据
$.each(rootNode, function(i, item) { target.formatData(data);
var tr = $('<tr></tr>'); // 开始绘制
tr.addClass('treegrid-' + (j + "_" + i)); var rootNode = target.getRootNodes();
target.renderRow(tr,item); if(rootNode){
item.isShow = true; $.each(rootNode, function(i, item) {
tbody.append(tr); target.handleNode(item, 1, tbody);
target.getChildNodes(data, item, (j + "_" + i), tbody); });
}); }
// 下边的操作主要是为了查询时让一些没有根节点的节点显示 // 下边的操作主要是为了查询时让一些没有根节点的节点显示
$.each(data, function(i, item) { $.each(data, function(i, item) {
if(!item.isShow){ if(!item.isShow){
var tr = $('<tr></tr>'); var tr = target.renderRow(item,false,1);
tr.addClass('treegrid-' + (j + "_" + i));
target.renderRow(tr,item);
tbody.append(tr); tbody.append(tr);
} }
}); });
target.append(tbody); target.append(tbody);
// 初始化treegrid
target.treegrid({
treeColumn: options.expandColumn?options.expandColumn:(hasSelectItem?1:0),//如果有radio或checkbox默认第二列层级显示,当前是在用户未设置的提前下
expanderExpandedClass : options.expanderExpandedClass,
expanderCollapsedClass : options.expanderCollapsedClass
});
if (!options.expandAll) {
target.treegrid('collapseAll');
}
//动态设置表头宽度 //动态设置表头宽度
thead.css("width", tbody.children(":first").css("width")); thead.css("width", tbody.children(":first").css("width"));
// 行点击选中事件 // 行点击选中事件
...@@ -173,19 +188,43 @@ ...@@ -173,19 +188,43 @@
var _ipt = $(this).find("input[name='select_item']"); var _ipt = $(this).find("input[name='select_item']");
if(_ipt.attr("type")=="radio"){ if(_ipt.attr("type")=="radio"){
_ipt.prop('checked',true); _ipt.prop('checked',true);
target.find("tbody").find("tr").removeClass("treegrid-selected"); target.find("tbody").find("tr").removeClass("treetable-selected");
$(this).addClass("treegrid-selected"); $(this).addClass("treetable-selected");
}else{ }else{
if(_ipt.prop('checked')){ if(_ipt.prop('checked')){
_ipt.prop('checked',false); _ipt.prop('checked',false);
$(this).removeClass("treegrid-selected"); $(this).removeClass("treetable-selected");
}else{ }else{
_ipt.prop('checked',true); _ipt.prop('checked',true);
$(this).addClass("treegrid-selected"); $(this).addClass("treetable-selected");
} }
} }
} }
}); });
// 小图标点击事件--展开缩起
target.find("tbody").find("tr").find(".treetable-expander").click(function(){
var tr = $(this).parent().parent();
var _code = tr.find("input[name='select_item']").val();
if(options.id==options.code){
_code = tr.find("input[name='select_item']").val();
}else{
_code = tr.find("td[name='"+options.code+"']").text();
}
var _ls = target.find("tbody").find(".tg-"+_code);//下一级
if(_ls&&_ls.length>0){
var _flag = $(this).hasClass(options.expanderExpandedClass);
$.each(_ls, function(index, item) {
$(item).css("display",_flag?"none":"table");
});
if(_flag){
$(this).removeClass(options.expanderExpandedClass)
$(this).addClass(options.expanderCollapsedClass)
}else{
$(this).removeClass(options.expanderCollapsedClass)
$(this).addClass(options.expanderExpandedClass)
}
}
});
}, },
error:function(xhr,textStatus){ error:function(xhr,textStatus){
var _errorMsg = '<tr><td colspan="'+options.columns.length+'"><div style="display: block;text-align: center;">'+xhr.responseText+'</div></td></tr>' var _errorMsg = '<tr><td colspan="'+options.columns.length+'"><div style="display: block;text-align: center;">'+xhr.responseText+'</div></td></tr>'
...@@ -213,10 +252,24 @@ ...@@ -213,10 +252,24 @@
var chk_value =[]; var chk_value =[];
// 如果是radio // 如果是radio
if(_ipt.attr("type")=="radio"){ if(_ipt.attr("type")=="radio"){
chk_value.push({id:_ipt.val()}); var _data = {id:_ipt.val()};
var _tds = _ipt.parent().parent().find("td");
_tds.each(function(_i,_item){
if(_i!=0){
_data[$(_item).attr("name")]=$(_item).text();
}
});
chk_value.push(_data);
}else{ }else{
_ipt.each(function(_i,_item){ _ipt.each(function(_i,_item){
chk_value.push({id:$(_item).val()}); var _data = {id:$(_item).val()};
var _tds = $(_item).parent().parent().find("td");
_tds.each(function(_ii,_iitem){
if(_ii!=0){
_data[$(_iitem).attr("name")]=$(_iitem).text();
}
});
chk_value.push(_data);
}); });
} }
return chk_value; return chk_value;
...@@ -226,7 +279,7 @@ ...@@ -226,7 +279,7 @@
if(parms){ if(parms){
target.load(parms); target.load(parms);
}else{ }else{
target.load(); target.load();
} }
}, },
// 组件的其他方法也可以进行类似封装........ // 组件的其他方法也可以进行类似封装........
...@@ -234,7 +287,7 @@ ...@@ -234,7 +287,7 @@
$.fn.bootstrapTreeTable.defaults = { $.fn.bootstrapTreeTable.defaults = {
id : 'id',// 选取记录返回的值 id : 'id',// 选取记录返回的值
code : 'code',// 用于设置父子关系 code : 'id',// 用于设置父子关系
parentCode : 'parentId',// 用于设置父子关系 parentCode : 'parentId',// 用于设置父子关系
rootCodeValue: null,//设置根节点code值----可指定根节点,默认为null,"",0,"0" rootCodeValue: null,//设置根节点code值----可指定根节点,默认为null,"",0,"0"
data : [], // 构造table的数据集合 data : [], // 构造table的数据集合
...@@ -243,6 +296,7 @@ ...@@ -243,6 +296,7 @@
ajaxParams : {}, // 请求数据的ajax的data属性 ajaxParams : {}, // 请求数据的ajax的data属性
expandColumn : null,// 在哪一列上面显示展开按钮 expandColumn : null,// 在哪一列上面显示展开按钮
expandAll : true, // 是否全部展开 expandAll : true, // 是否全部展开
expandFirst : false, // 是否默认第一级展开--expandAll为false时生效
striped : false, // 是否各行渐变色 striped : false, // 是否各行渐变色
columns : [], columns : [],
toolbar: null,//顶部工具条 toolbar: null,//顶部工具条
......
$.extend($.fn.treegrid.defaults, {
expanderExpandedClass: 'glyphicon glyphicon-chevron-down',
expanderCollapsedClass: 'glyphicon glyphicon-chevron-right'
});
/*! jquery-treegrid 0.3.0 */
!function(a){var b={initTree:function(b){var c=a.extend({},this.treegrid.defaults,b);return this.each(function(){var b=a(this);b.treegrid("setTreeContainer",a(this)),b.treegrid("setSettings",c),c.getRootNodes.apply(this,[a(this)]).treegrid("initNode",c),b.treegrid("getRootNodes").treegrid("render")})},initNode:function(b){return this.each(function(){var c=a(this);c.treegrid("setTreeContainer",b.getTreeGridContainer.apply(this)),c.treegrid("getChildNodes").treegrid("initNode",b),c.treegrid("initExpander").treegrid("initIndent").treegrid("initEvents").treegrid("initState").treegrid("initChangeEvent").treegrid("initSettingsEvents")})},initChangeEvent:function(){var b=a(this);return b.on("change",function(){var b=a(this);b.treegrid("render"),b.treegrid("getSetting","saveState")&&b.treegrid("saveState")}),b},initEvents:function(){var b=a(this);return b.on("collapse",function(){var b=a(this);b.removeClass("treegrid-expanded"),b.addClass("treegrid-collapsed")}),b.on("expand",function(){var b=a(this);b.removeClass("treegrid-collapsed"),b.addClass("treegrid-expanded")}),b},initSettingsEvents:function(){var b=a(this);return b.on("change",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onChange")&&b.treegrid("getSetting","onChange").apply(b)}),b.on("collapse",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onCollapse")&&b.treegrid("getSetting","onCollapse").apply(b)}),b.on("expand",function(){var b=a(this);"function"==typeof b.treegrid("getSetting","onExpand")&&b.treegrid("getSetting","onExpand").apply(b)}),b},initExpander:function(){var b=a(this),c=b.find("td").get(b.treegrid("getSetting","treeColumn")),d=b.treegrid("getSetting","expanderTemplate"),e=b.treegrid("getSetting","getExpander").apply(this);return e&&e.remove(),a(d).prependTo(c).click(function(){a(a(this).closest("tr")).treegrid("toggle")}),b},initIndent:function(){var b=a(this);b.find(".treegrid-indent").remove();for(var c=b.treegrid("getSetting","indentTemplate"),d=b.find(".treegrid-expander"),e=b.treegrid("getDepth"),f=0;e>f;f++)a(c).insertBefore(d);return b},initState:function(){var b=a(this);return b.treegrid(b.treegrid("getSetting","saveState")&&!b.treegrid("isFirstInit")?"restoreState":"expanded"===b.treegrid("getSetting","initialState")?"expand":"collapse"),b},isFirstInit:function(){var b=a(this).treegrid("getTreeContainer");return void 0===b.data("first_init")&&b.data("first_init",void 0===a.cookie(b.treegrid("getSetting","saveStateName"))),b.data("first_init")},saveState:function(){var b=a(this);if("cookie"===b.treegrid("getSetting","saveStateMethod")){var c=a.cookie(b.treegrid("getSetting","saveStateName"))||"",d=""===c?[]:c.split(","),e=b.treegrid("getNodeId");b.treegrid("isExpanded")?-1===a.inArray(e,d)&&d.push(e):b.treegrid("isCollapsed")&&-1!==a.inArray(e,d)&&d.splice(a.inArray(e,d),1),a.cookie(b.treegrid("getSetting","saveStateName"),d.join(","))}return b},restoreState:function(){var b=a(this);if("cookie"===b.treegrid("getSetting","saveStateMethod")){var c=a.cookie(b.treegrid("getSetting","saveStateName")).split(",");b.treegrid(-1!==a.inArray(b.treegrid("getNodeId"),c)?"expand":"collapse")}return b},getSetting:function(b){return a(this).treegrid("getTreeContainer")?a(this).treegrid("getTreeContainer").data("settings")[b]:null},setSettings:function(b){a(this).treegrid("getTreeContainer").data("settings",b)},getTreeContainer:function(){return a(this).data("treegrid")},setTreeContainer:function(b){return a(this).data("treegrid",b)},getRootNodes:function(){return a(this).treegrid("getSetting","getRootNodes").apply(this,[a(this).treegrid("getTreeContainer")])},getAllNodes:function(){return a(this).treegrid("getSetting","getAllNodes").apply(this,[a(this).treegrid("getTreeContainer")])},isNode:function(){return null!==a(this).treegrid("getNodeId")},getNodeId:function(){return null===a(this).treegrid("getSetting","getNodeId")?null:a(this).treegrid("getSetting","getNodeId").apply(this)},getParentNodeId:function(){return a(this).treegrid("getSetting","getParentNodeId").apply(this)},getParentNode:function(){return null===a(this).treegrid("getParentNodeId")?null:a(this).treegrid("getSetting","getNodeById").apply(this,[a(this).treegrid("getParentNodeId"),a(this).treegrid("getTreeContainer")])},getChildNodes:function(){return a(this).treegrid("getSetting","getChildNodes").apply(this,[a(this).treegrid("getNodeId"),a(this).treegrid("getTreeContainer")])},getDepth:function(){return null===a(this).treegrid("getParentNode")?0:a(this).treegrid("getParentNode").treegrid("getDepth")+1},isRoot:function(){return 0===a(this).treegrid("getDepth")},isLeaf:function(){return 0===a(this).treegrid("getChildNodes").length},isLast:function(){if(a(this).treegrid("isNode")){var b=a(this).treegrid("getParentNode");if(null===b){if(a(this).treegrid("getNodeId")===a(this).treegrid("getRootNodes").last().treegrid("getNodeId"))return!0}else if(a(this).treegrid("getNodeId")===b.treegrid("getChildNodes").last().treegrid("getNodeId"))return!0}return!1},isFirst:function(){if(a(this).treegrid("isNode")){var b=a(this).treegrid("getParentNode");if(null===b){if(a(this).treegrid("getNodeId")===a(this).treegrid("getRootNodes").first().treegrid("getNodeId"))return!0}else if(a(this).treegrid("getNodeId")===b.treegrid("getChildNodes").first().treegrid("getNodeId"))return!0}return!1},isExpanded:function(){return a(this).hasClass("treegrid-expanded")},isCollapsed:function(){return a(this).hasClass("treegrid-collapsed")},isOneOfParentsCollapsed:function(){var b=a(this);return b.treegrid("isRoot")?!1:b.treegrid("getParentNode").treegrid("isCollapsed")?!0:b.treegrid("getParentNode").treegrid("isOneOfParentsCollapsed")},expand:function(){return this.treegrid("isLeaf")||this.treegrid("isExpanded")?this:(this.trigger("expand"),this.trigger("change"),this)},expandAll:function(){var b=a(this);return b.treegrid("getRootNodes").treegrid("expandRecursive"),b},expandRecursive:function(){return a(this).each(function(){var b=a(this);b.treegrid("expand"),b.treegrid("isLeaf")||b.treegrid("getChildNodes").treegrid("expandRecursive")})},collapse:function(){return a(this).each(function(){var b=a(this);b.treegrid("isLeaf")||b.treegrid("isCollapsed")||(b.trigger("collapse"),b.trigger("change"))})},collapseAll:function(){var b=a(this);return b.treegrid("getRootNodes").treegrid("collapseRecursive"),b},collapseRecursive:function(){return a(this).each(function(){var b=a(this);b.treegrid("collapse"),b.treegrid("isLeaf")||b.treegrid("getChildNodes").treegrid("collapseRecursive")})},toggle:function(){var b=a(this);return b.treegrid(b.treegrid("isExpanded")?"collapse":"expand"),b},render:function(){return a(this).each(function(){var b=a(this);b.treegrid("isOneOfParentsCollapsed")?b.hide():b.show(),b.treegrid("isLeaf")||(b.treegrid("renderExpander"),b.treegrid("getChildNodes").treegrid("render"))})},renderExpander:function(){return a(this).each(function(){var b=a(this),c=b.treegrid("getSetting","getExpander").apply(this);c?b.treegrid("isCollapsed")?(c.removeClass(b.treegrid("getSetting","expanderExpandedClass")),c.addClass(b.treegrid("getSetting","expanderCollapsedClass"))):(c.removeClass(b.treegrid("getSetting","expanderCollapsedClass")),c.addClass(b.treegrid("getSetting","expanderExpandedClass"))):(b.treegrid("initExpander"),b.treegrid("renderExpander"))})}};a.fn.treegrid=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method with name "+c+" does not exists for jQuery.treegrid"):b.initTree.apply(this,arguments)},a.fn.treegrid.defaults={initialState:"expanded",saveState:!1,saveStateMethod:"cookie",saveStateName:"tree-grid-state",expanderTemplate:'<span class="treegrid-expander"></span>',indentTemplate:'<span class="treegrid-indent"></span>',expanderExpandedClass:"treegrid-expander-expanded",expanderCollapsedClass:"treegrid-expander-collapsed",treeColumn:0,getExpander:function(){return a(this).find(".treegrid-expander")},getNodeId:function(){var b=/treegrid-([A-Za-z0-9_-]+)/;return b.test(a(this).attr("class"))?b.exec(a(this).attr("class"))[1]:null},getParentNodeId:function(){var b=/treegrid-parent-([A-Za-z0-9_-]+)/;return b.test(a(this).attr("class"))?b.exec(a(this).attr("class"))[1]:null},getNodeById:function(a,b){var c="treegrid-"+a;return b.find("tr."+c)},getChildNodes:function(a,b){var c="treegrid-parent-"+a;return b.find("tr."+c)},getTreeGridContainer:function(){return a(this).closest("table")},getRootNodes:function(b){var c=a.grep(b.find("tr"),function(b){var c=a(b).attr("class"),d=/treegrid-([A-Za-z0-9_-]+)/,e=/treegrid-parent-([A-Za-z0-9_-]+)/;return d.test(c)&&!e.test(c)});return a(c)},getAllNodes:function(b){var c=a.grep(b.find("tr"),function(b){var c=a(b).attr("class"),d=/treegrid-([A-Za-z0-9_-]+)/;return d.test(c)});return a(c)},onCollapse:null,onExpand:null,onChange:null}}(jQuery);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment