/**
* 因为ligerui的tree用起来有些问题没解决,所以赶时间临时参考效果做一个,后期看情况扩展,使用参数上参考ligerui.^_^.
* params: {
* url:'xxxx/xxx/xxx',
* width:'100%',
* headerRowHeight:28,
* rowHeight:28,
* params:{xxx:xxx,xxx:xxx}
* rownumbers:true,
* columns:[{display:'分类名称',name:'catName',id:'catId',align:'left',width:'20%',render:function(item){}}]
*}
*/
$.fn.WSTGridTree = function(options){
var radomId = (new Date().getTime()+Math.round(Math.random()*700));
var defaults = {id:'wst_'+radomId,tbodyId:'wst_tbody_'+radomId,width:'100%',headerRowHeight:28,rowHeight:28,nodeNum:0,params:{},level:0};
var opts = $.extend(defaults, options);
var jqObj = $(this);
var treeKeyId;
var createTBHead = function(){
var head = [],htmp,rowAlign,rowWidth;
head.push('
');
if(opts.rownumbers)head.push('# | ');
for(var i=0;i'+htmp.display+'');
}else{
rowAlign = (htmp.align?(' style="text-align:'+htmp.align+'" '):'');
head.push(''+htmp.display+' | ');
}
}
head.push('
');
$(jqObj).html(head.join(''));
}
var loadData = function(){
var popts = $.extend(opts,{pid:opts.tbodyId,params:{},level:0});
loadRow(popts);
}
var loadRow = function(_opts){
$("tr[id^='"+opts.pid+"_']").remove();
$.getJSON(_opts.url,_opts.params,function(data,textStatus){
if(data.Rows){
var body,htmp,ttmp,val,rowAlign,rowWidth,nodeId,prefix;
data = data.Rows;
var lastNodeId = opts.pid;
for(var i=0;i');
if(opts.rownumbers)body.push(' | ');
for(var j=0;j';
}
prefix+='';
body.push(''+prefix+val+' | ');
}else{
rowAlign = (htmp.align?(' style="text-align:'+htmp.align+'" '):'');
body.push(''+val+' | ');
}
}
body.push('');
$(body.join('')).insertAfter($('#'+lastNodeId));
lastNodeId = nodeId;
$('#'+nodeId+" .wst-tree-img").click(function(){
if($(this).hasClass('fa-folder')){
$(this).removeClass('fa-folder').addClass('fa-folder-open');
if($("tr[id^='"+$(this).attr('pdataid')+"_']").size()==0){
_opts.pid = $(this).attr('pdataid');
_opts.params[treeKeyId] = $(this).attr('dataid');
_opts.level = parseInt($(this).attr('lv'),10)+1;
loadRow(_opts);
}else{
$("tr[id^='"+$(this).attr('pdataid')+"_']").each(function(){
$(this).show();
})
}
}else{
$(this).removeClass('fa-folder-open').addClass('fa-folder');
$("tr[id^='"+$(this).attr('pdataid')+"_']").each(function(){
$(this).hide();
})
}
changeRowColor();
changeLinenumber();
})
}
changeRowColor();
changeLinenumber();
}
if(opts.callback)opts.callback();
})
}
var changeRowColor = function(){
var even = false;
$('.wst-grid-tree-row').each(function(){
$(this).removeClass('bg-color');
if($(this).is(':visible')){
if(even)$(this).addClass('bg-color');
even = !even;
$(this).click(function(){
$(this).addClass('row-selected').siblings().removeClass('row-selected');
$(this).addClass('row-selected').siblings().each(function(){
if($(this).hasClass('bg-color2') && !$(this).hasClass('row-selected'))$(this).removeClass('bg-color2').addClass('bg-color');
})
});
/*$(this).live({
mouseover:function(){
if($(this).hasClass('row-selected'))$(this).removeClass('row-selected').addClass('row-selected2');
if($(this).hasClass('bg-color'))$(this).removeClass('bg-color').addClass('bg-color2');
$(this).addClass('row-hover');
},
mouseout:function(){
$(this).removeClass('row-hover');
if($(this).hasClass('row-selected2'))$(this).removeClass('row-selected2').addClass('row-selected');
if($(this).hasClass('bg-color2') && !$(this).hasClass('row-selected'))$(this).removeClass('bg-color2').addClass('bg-color');
}
}) */
}
})
}
var changeLinenumber = function(){
var i=1;
$('.wst-grid-tree-row').each(function(){
if($(this).is(':visible'))$(this).find('.l-grid-row-cell-rownumbers').html(i++);
});
}
createTBHead();
loadData();
return {reload:function(nodeId){
if(nodeId && nodeId>0){
var node = $('.j-'+nodeId);
var topts = {params:{}};
topts['pid'] = node.attr('id');
topts['params'][treeKeyId] = nodeId;
topts['level'] = parseInt(node.attr('lv'),10)+1;
var popts = $.extend(opts,topts);
loadRow(popts);
}else{
loadData();
}
}}
}