if($ == undefined){ $ = jQuery; } function drill(dimId, compId, pos, val, vdesc, oldDimId, islink){ var comp = findCompById(compId); var dodrill = function(){ var dims = null; if(pos == 'row'){ dims = comp.rows; }else{ dims = comp.cols; } //判断是否有联动 if(comp.complink && islink){ //联动图形 var chartComp = findCompById(comp.complink); if(chartComp != null && isSameDimsInDrill(comp, chartComp)){ drillingChart(dimId, chartComp.id, pos, val, vdesc, oldDimId, false); //存在相同维度才能联动 } } //设置当前维度值为过滤条件 var oldDim = null; var oldDimIndex = 0; for(i=0; i"; var cnt = 0; var ignoreGroup = []; var groupExist = function(ignoreGroup, group){ var r = false; for(k=0; k下钻" + resp[i].dim_desc+"" cnt = cnt + 1; }else{ //有分组,显示分组, 对于分组,如果下级分组已选择,不能再选择上级分组 if(!groupExist(ignoreGroup, resp[i].grouptype)){ var groups = "
下钻" + resp[i].groupname+"
" ignoreGroup.push(resp[i].grouptype); //查询分组的内容 var lsdim = findGroupChild(resp[i].grouptype); var ss = ""; var ccnt = 0; for(kl = 0; kl下钻" + tmp.dim_desc+"
" ccnt = ccnt + 1; }else{ ss = ""; ccnt = 0; } } groups = groups + ss + "
"; if(ccnt == 0){ groups = ""; } str = str + groups; cnt = cnt + ccnt; } } } str = str + ""; if(cnt == 0){ msginfo("数据已钻透。", "error"); return; } $(str).appendTo("body"); $("#drillmenu").menu({}); $("#drillmenu").menu("show", {left:offset.left, top:offset.top + 20}); } if(comp.dims){ opts(comp.dims); }else{ $.ajax({ async:false, type:"POST", url: curTmpInfo.qdimUrl ? curTmpInfo.qdimUrl :"queryDims.action", data:{"cubeId": comp.cubeId}, dataType:"json", success:function(resp){ comp.dims = resp; opts(comp.dims); } }); } } //上卷维度 function goupDim(compId, ts, pos, dimId, islink){ var dims = null; var comp = findCompById(compId); if(pos == 'row'){ dims = comp.rows; }else{ dims = comp.cols; } //判断是否有组件联动 if(comp.complink && islink){ var chartComp = findCompById(comp.complink); if(chartComp != null && isSameDimsInDrill(comp, chartComp)){ //必须维度相同才能联动。 chartGoupDim(chartComp.id, dimId, pos, false); } } //清除过滤条件 //删除该维度以后的维度 var idx = 0; for(i=0; i"; var cnt = 0; var ignoreGroup = []; var groupExist = function(ignoreGroup, group){ var r = false; for(k=0; k下钻" + resp[i].dim_desc+"" cnt = cnt + 1; }else{ //有分组,显示分组, 对于分组,如果下级分组已选择,不能再选择上级分组 if(!groupExist(ignoreGroup, resp[i].grouptype)){ var groups = "
下钻" + resp[i].groupname+"
" ignoreGroup.push(resp[i].grouptype); //查询分组的内容 var lsdim = findGroupChild(resp[i].grouptype); var ss = ""; var ccnt = 0; for(kl = 0; kl下钻" + tmp.dim_desc+"
" ccnt = ccnt + 1; }else{ ss = ""; ccnt = 0; } } groups = groups + ss + "
"; if(ccnt == 0){ groups = ""; } str = str + groups; cnt = cnt + ccnt; } } } str = str + ""; if(cnt == 0){ msginfo("数据已钻透。", "error"); return; } $(str).appendTo("body"); $("#drillmenu").menu({}); $("#drillmenu").menu("show", {left:offset.left, top:offset.top + 20}); } if(comp.dims){ opts(comp.dims); }else{ $.ajax({ async:false, type:"POST", url: curTmpInfo.qdimUrl ? curTmpInfo.qdimUrl :"queryDims.action", data:{"cubeId": comp.cubeId}, dataType:"json", success:function(resp){ comp.dims = resp; opts(comp.dims); } }); } } //开始钻取图形 function drillingChart(id, compId, pos, xvalue, xvalueDesc, oldDimId, islink){ var comp = findCompById(compId); //判断是否有组件的dims,如果没有就去获取 if(!comp.dims){ $.ajax({ async:false, type:"POST", url:curTmpInfo.qdimUrl ? curTmpInfo.qdimUrl :"queryDims.action", data:{"cubeId": comp.cubeId}, dataType:"json", success:function(resp){ comp.dims = resp; } }); } //设置当前维度值为过滤条件 if(pos == "row"){ comp.chartJson.xcol.vals = xvalue + ""; comp.chartJson.xcol.valDesc = xvalueDesc; comp.chartJson.xcol.pos = "row"; }else{ comp.chartJson.scol.vals = xvalue + ""; comp.chartJson.scol.valDesc = xvalueDesc; comp.chartJson.scol.pos = "col"; } //判断是否联动表格 if(comp.complink && islink){ var tableComp = findCompById(comp.complink); if(tableComp != null && isSameDimsInDrill(tableComp, comp)){ //必须维度相同才能联动。 drill(id, tableComp.id, 'row', xvalue, xvalueDesc, oldDimId, false); } } var dim = pos == "row" ? comp.chartJson.xcol : comp.chartJson.scol; dim.filtertype = 2; // 按值钻取 if(dim.type == 'month'){ delete dim.startmt; delete dim.endmt; } if(dim.type == 'day'){ delete dim.startdt; delete dim.enddt; } //把当前维放入params //如果当前维度是合计,不用加入 if(xvalue == '合计' && xvalueDesc == '合计'){ }else{ comp.chartJson.params.push(pos=="row"?comp.chartJson.xcol:comp.chartJson.scol); } //更新x轴 var json = null; for(j=0;j" + node.dimdesc + ""); curTmpInfo.isupdate = true; chartview(comp, comp.id); } //图形上卷 function chartGoupDim(compId,dimId, pos, islink){ var comp = findCompById(compId); var dims = comp.chartJson.params; //判断是否有组件联动 if(comp.complink && islink){ var tableComp = findCompById(comp.complink); if(tableComp != null && isSameDimsInDrill(tableComp, comp)){ //必须维度相同才能联动。 goupDim(tableComp.id, null, pos, dimId, false); } } //清除过滤条件 //删除该维度以后的维度 var idx = 0; var xcol = null; for(i=0; i" + node.dimdesc + ""); curTmpInfo.isupdate = true; chartview(comp, comp.id); } /** 判断图形和表格是否有相同的维度,如果维度不同,不能联动 **/ function isSameDimsInDrill(table, chart){ var tj = table; var cj = chart.chartJson; var tcnt = tj.cols.length + tj.rows.length; var ccnt = (cj.params?cj.params.length:0) + ($.isEmptyObject(cj.xcol)?0:1) + ($.isEmptyObject(cj.scol)?0:1); if(tcnt != ccnt){ return false; } var ret = true; for(i=0; cj.params && i