if($ == undefined){ $ = jQuery; } //创建交叉表 function crtCrossTable(){ var ret = "
" + ""+ "
将维度拖到此处作为列标签
"+"
"+ "
将维度拖到此处
作为行标签
"+"
"+ "
将度量拖到此处
查询数据
"+"
"; return ret; } /** 注册行列维度、度量区域的拖拽事件 对应表格组件的事件 **/ function initDropDiv(id){ var ischg = false; $("#T" + id + " #d_colDims, #T" + id +" #d_rowDims, #T"+id+" #d_kpi").droppable({ accept:"ul.tableTreeCss .tree-node", onDragEnter:function(e,source){ var node = $("#datasettree").tree("getNode", source); var tp = node.attributes.col_type; //对维度拖拽设置图标 if(tp == 1 && ($(this).attr("id") == "d_colDims" || $(this).attr("id") == "d_rowDims")){ $(source).draggable('proxy').find("span").removeClass("tree-dnd-no"); $(source).draggable('proxy').find("span").addClass("tree-dnd-yes"); if($(this).attr("id") == "d_colDims"){ $("#T"+id+" #d_colDims").css("border", "1px solid #ff0000"); } if($(this).attr("id") == "d_rowDims"){ $("#T"+id+" #d_rowDims").css("border", "1px solid #ff0000"); } ischg = true; }else{ ischg = false; } //对度量拖拽设置图标 if(tp == 2 && $(this).attr("id") == "d_kpi"){ $(source).draggable('proxy').find("span").removeClass("tree-dnd-no"); $(source).draggable('proxy').find("span").addClass("tree-dnd-yes"); $("#T"+id+" #d_kpi").css("border", "1px solid #ff0000"); ischg = false; } e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 }, onDragLeave:function(e,source){ if($(this).attr("id") == 'd_kpi' && ischg == true){ }else{ $(source).draggable('proxy').find("span").addClass("tree-dnd-no"); $(source).draggable('proxy').find("span").removeClass("tree-dnd-yes"); $("#T"+id+" #" + $(this).attr("id")).css("border", "none"); } e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 }, onDrop:function(e,source){ var id = $(this).parents(".comp_table").attr("id").replace("T",""); var json = findCompById(Number(id)); e.cancelBubble=true; e.stopPropagation(); //阻止事件冒泡 //清除边框颜色 $("#T"+id+" #" + $(this).attr("id")).css("border", "none"); //获取TREE var node = $("#datasettree").tree("getNode", source); //判断拖入的维度及度量是否和以前维度及度量在同一个表。 if(json.cubeId != undefined){ if(json.cubeId != node.attributes.cubeId){ msginfo("您拖入的"+ (node.attributes.col_type == 2 ? "度量" : "维度") +"与组件已有的内容不在同一个数据表中,拖放失败。"); return; } } //判断拖入的度量是否是(同比、环比),如果是,需要判断当前维度是否有date类型 /** 放入度量计算菜单判断 if(node.attributes.calc_kpi == 1){ if(!isExistDateDim(json, 'table')){ msginfo("您拖入的度量需要表格中先有时间类型的维度(年/季度/月/日)。"); return; } } **/ json.cubeId = node.attributes.cubeId; json.dsid = node.attributes.dsid; json.dsetId = node.attributes.dsetId; if(json.kpiJson == undefined){ json.kpiJson = []; }; if(json.cols == undefined){ json.cols = []; } if(json.rows == undefined){ json.rows = []; } //写度量 if(node.attributes.col_type == 2 && $(this).attr("id") == "d_kpi"){ //如果度量存在就忽略 if(!kpiExist(node.attributes.col_id, json.kpiJson)){ json.kpiJson.push({"kpi_id":node.attributes.col_id, "kpi_name" : node.text, "col_name":node.attributes.col_name, "aggre":node.attributes.aggre, "fmt":node.attributes.fmt, "alias":node.attributes.alias,"tname":node.attributes.tname,"unit":node.attributes.unit,"rate":node.attributes.rate,"calc":node.attributes.calc}); }else{ msginfo("度量已经存在。"); return; } curTmpInfo.isupdate = true; tableView(json, Number(id)); } //写维度 if(node.attributes.col_type == 1){ //写col维度 if($(this).attr("id") == "d_colDims"){ if(dimExist(node.attributes.col_id, json.cols) || dimExist(node.attributes.col_id, json.rows)){ msginfo("维度已经存在。"); return; } //如果维度有分组,分组必须相同 var group = node.attributes.grouptype; if(group != null && findGroup(json.rows, group)){ msginfo("拖放失败,同一分组的维度必须在同一行/列标签。"); return; } json.cols.push({"id":node.attributes.col_id, "dimdesc" : node.text, "type":node.attributes.dim_type, "colname":node.attributes.col_name,"alias":node.attributes.alias,"tname":node.attributes.tname,"iscas":node.attributes.iscas, "tableName":node.attributes.tableName, "tableColKey":node.attributes.tableColKey,"tableColName":node.attributes.tableColName, "dimord":node.attributes.dimord, "grouptype":node.attributes.grouptype,"valType":node.attributes.valType,ordcol:node.attributes.ordcol,dateformat:node.attributes.dateformat,"calc":node.attributes.calc}); curTmpInfo.isupdate = true; tableView(json, Number(id)); } //写row维度 if($(this).attr("id") == "d_rowDims"){ if(dimExist(node.attributes.col_id, json.rows) || dimExist(node.attributes.col_id, json.cols)){ msginfo("维度已经存在。"); return; } //如果维度有分组,分组必须相同 var group = node.attributes.grouptype; if(group != null && findGroup(json.cols, group)){ msginfo("拖放失败,同一分组的维度必须在同一行/列标签。"); return; } json.rows.push({"id":node.attributes.col_id, "dimdesc" : node.text, "type":node.attributes.dim_type, "colname":node.attributes.col_name,"alias":node.attributes.alias,"tname":node.attributes.tname,"iscas":node.attributes.iscas, "tableName":node.attributes.tableName, "tableColKey":node.attributes.tableColKey,"tableColName":node.attributes.tableColName, "dimord":node.attributes.dimord,"grouptype":node.attributes.grouptype,"valType":node.attributes.valType,ordcol:node.attributes.ordcol,dateformat:node.attributes.dateformat,"calc":node.attributes.calc}); curTmpInfo.isupdate = true; tableView(json, Number(id)); } } } }); //注册固定表头事件 fireTableScroll(id); } function fireTableScroll(id){ $("#T"+id+" #d_kpi").scroll(function(){ var top = $(this).scrollTop(); $("#d_rowDims table").css("margin-top", "-"+top+"px"); //$("#T"+id+" #d_rowDims").scrollTop(top); var left = $(this).scrollLeft(); $("#T"+id+" #d_colDims table").css("margin-left", "-"+left+"px"); }); var comp = findCompById(id); var rowLvl = comp.rows?comp.rows.length:1; if(rowLvl == 0){ rowLvl = 1; } var w = $("#optarea").width(), h = $(window).height(); h = h - 300; w = w - (127 * rowLvl); if(w <0){ w = 200; } $("#T"+id+" #d_rowDims").height(h); $("#T"+id+" #d_colDims").width(w); $("#T"+id+" #d_kpi").width(w).height(h); } //查找维度分组 function findGroup(dims, group, curNode){ var ret = false; if(!dims || dims == null){ return ret; } for(m=0; m图片样式:

"; str = str + " 当前值
当前值 < "+(warn?warn.val1:"X")+"
当前值 < "+(warn?warn.val2:"X")+"
"; $('#pdailog').dialog({ title: '指标预警', width: 360, height: 240, closed: false, cache: false, modal: true, toolbar:null, content: str, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var pictype = $("#pdailog #wctype").val(); var reverse = $("#pdailog input[name=\"fztp\"]:checked").val(); if(!reverse){ reverse = "n"; } var logic1 = $("#pdailog #logic1").val(); var val1 = $("#pdailog #val1").val(); var logic2 = $("#pdailog #logic2").val(); var val2 = $("#pdailog #val2").val(); var pic1 = $("#pdailog #w1").attr("class"); var pic2 = $("#pdailog #w2").attr("class"); var pic3 = $("#pdailog #w3").attr("class"); if(val1 == '' || val2 == ''){ delete kpi.warning; tableView(comp, compId); $('#pdailog').dialog('close'); return; } kpi.warning = {pictype:pictype,reverse:reverse,logic1:logic1,val1:val1,logic2:logic2,val2:val2,pic1:pic1,pic2:pic2,pic3:pic3} tableView(comp, compId); $('#pdailog').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $("#pdailog #val1,#pdailog #val2").numberbox({width:100,height:28, onChange:function(a, b){ var idx = $(this).attr("idx"); $("#pdailog #and" + idx).text(a); } }); /** $("#pdailog #val2").numberbox("onChange", function(){ $("#pdailog #and2").text($("#pdailog #val2").numberbox("getValue")); }); **/ $("#pdailog #wctype").change(function(){ if($(this).val() == 1){ $("#pdailog #w1").attr("class", "warning6"); $("#pdailog #w2").attr("class", "warning5"); $("#pdailog #w3").attr("class", "warning4"); }else if($(this).val() == 2){ $("#pdailog #w1").attr("class", "warning3"); $("#pdailog #w2").attr("class", "warning2"); $("#pdailog #w3").attr("class", "warning1"); } }); //反转图片 $("#pdailog #fztp").change(function(){ if(this.checked){ if($("#pdailog #wctype").val() == 1){ $("#pdailog #w1").attr("class", "warning4"); $("#pdailog #w2").attr("class", "warning5"); $("#pdailog #w3").attr("class", "warning6"); }else if($("#pdailog #wctype").val() == 2){ $("#pdailog #w1").attr("class", "warning1"); $("#pdailog #w2").attr("class", "warning2"); $("#pdailog #w3").attr("class", "warning3"); } }else{ if($("#pdailog #wctype").val() == 1){ $("#pdailog #w1").attr("class", "warning6"); $("#pdailog #w2").attr("class", "warning5"); $("#pdailog #w3").attr("class", "warning4"); }else if($("#pdailog #wctype").val() == 2){ $("#pdailog #w1").attr("class", "warning3"); $("#pdailog #w2").attr("class", "warning2"); $("#pdailog #w3").attr("class", "warning1"); } } }); $("#pdailog #clear").change(function(){ if(this.checked){ $("#pdailog #val1").numberbox("clear"); $("#pdailog #val2").numberbox("clear"); } }); } function kpiFilter(tp){ var kpiId = curTmpInfo.ckid; var compId = curTmpInfo.compId.replace("T", ""); var comp = findCompById(compId); var kpi = findKpiById(kpiId, comp.kpiJson); var ft = kpi.filter; var unitStr = ""; if(kpi.rate == 1000){ unitStr = "千"; }else if(kpi.rate == 10000){ unitStr = "万"; }else if(kpi.rate == 1000000){ unitStr = "百万"; }else if(kpi.rate == 100000000){ unitStr = "亿"; } var ctx = "
"+kpi.kpi_name+":
- " + unitStr+kpi.unit+"
"; $('#pdailog').dialog({ title: '度量筛选', width: 350, height: 220, closed: false, cache: false, modal: true, toolbar:null, content: ctx, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ var ft = $("#pdailog #ftype").val(); var sv = $("#pdailog #startval").val(); var ev = $("#pdailog #endval").val(); if(ft == "" || sv == ""){ delete kpi.filter; }else{ var filter = {"kpi":kpi.kpi_id,"filterType":ft,"val1":Number(sv),"val2":(ev == ""?0:Number(ev))}; kpi.filter = filter; } $('#pdailog').dialog('close'); curTmpInfo.isupdate = true; if(tp == 'table'){ tableView(comp, compId); }else if(tp == 'chart'){ chartview(comp, compId); } } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $('#pdailog #startval,#pdailog #endval').numberbox({width:100,height:28}); $("#pdailog #ftype").bind("change", function(){ var o = $(this); if(o.val() == 'between'){ $("#pdailog #endvalspan").css("display","inline"); }else{ $("#pdailog #endvalspan").css("display","none"); } }); $("#pdailog #clear").bind("click", function(){ $("#pdailog #ftype").val(""); $("#pdailog #startval").numberbox("clear"); $("#pdailog #endval").numberbox("clear"); }); } //从表格JSON中删除KPI function delJsonKpiOrDim(tp){ var id = curTmpInfo.ckid; var compId = curTmpInfo.compId.replace("T", ""); var comp = findCompById(Number(compId)); var pos = curTmpInfo.pos; if(tp == 'kpi'){ var kpis = comp.kpiJson; var idx = -1; for(var i=0; i"+resp+"" } }); } }); } function filterDims(){ var dimid = curTmpInfo.ckid; var compId = curTmpInfo.compId.replace("T", ""); var pos = curTmpInfo.pos; var name = curTmpInfo.dimname; //获取组件的JSON对象 var comp = findCompById(compId); var dims = null; if(pos == 'col'){ dims = comp.cols; }else{ dims = comp.rows; } var dim_type; for(var i=0; i
Loading...
', buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ //获取DIM var dim = null; for(var i=0; i Number(ed.replace(/-/g, ""))){ msginfo("您选择的开始日期不能大于结束日期。", "error"); return; } dim.startdt = st; dim.enddt = ed; dim.filtertype = 1; delete dim.vals; }else if("month" == dim.type && index == 0){ var st = $("#dimfiltertab #dfm2").val(); var ed = $("#dimfiltertab #dfm1").val(); //判断是否st < ed if(Number(st) > Number(ed)){ msginfo("您选择的开始月份不能大于结束月份。", "error"); return; } dim.startmt = st; dim.endmt = ed; dim.filtertype = 1; delete dim.vals; }else{ //获取勾选值 var vals = ""; var seles = $("#pdailog input[name='dimval']:checkbox:checked"); seles.each(function(a, b){ if(a >= 10){ //只能最多选10个 return; } vals = vals + $(this).val(); if(a == seles.size() - 1 || a == 9){ }else{ vals = vals + ','; } }); dim.vals = vals; dim.filtertype = 2; delete dim.startmt; delete dim.endmt; delete dim.startdt; delete dim.enddt; } curTmpInfo.isupdate = true; tableView(comp, compId); $('#pdailog').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); var vals = ""; var dimtp = ""; var filtertype = ""; //用来筛选的方式,1为区间,2为值筛选 var curDim = null; for(var i=0; i聚合方式:"; $('#pdailog').dialog({ title: '维度聚合', width: 300, height: 180, closed: false, cache: false, modal: true, toolbar:null, content: ctx, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ if(dim.issum == 'y'){ dim.issum = "n"; delete dim.aggre; }else{ dim.issum = 'y'; dim.aggre = $("#pdailog #dimaggre").val(); } curTmpInfo.isupdate = true; tableView(comp, compId); $('#pdailog').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); } /** 判断是否存在date类型的维度,比如day/month/quarter/year **/ function isExistDateDim(comp, tp){ var ret = false; if(tp == 'table'){ if(!comp.cols){ return ret; } for(var i=0; i度量名称:"+kpi.kpi_name+"
度量单位:"+kpi.unit+"
格 式 化:"+ ""; $('#pdailog').dialog({ title: '度量属性', width: 400, height: 230, closed: false, cache: false, modal: true, toolbar:null, content: ctx, buttons:[{ text:'确定', iconCls:'icon-ok', handler:function(){ kpi.fmt = $("#pdailog #fmt").val(); kpi.rate = Number($("#pdailog #kpiunit").val()); $('#pdailog').dialog('close'); curTmpInfo.isupdate = true; tableView(comp, compId); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); //让格式化、聚合方式选中 $("#pdailog #fmt").find("option[value='"+kpi.fmt+"']").attr("selected",true); $("#pdailog #kpiunit").find("option[value='"+kpi.rate+"']").attr("selected",true); //$("#pdailog #aggreType").find("option[value='"+kpi.aggre+"']").attr("selected",true); } function linkdetail(pms){ var comp = findCompById(1); $.ajax({ type: "POST", url: "header.action", dataType:"JSON", data: {dsetId:comp.dsetId,dsid:comp.dsid}, success: function(resp){ if($("#dsColumn_div").size() == 0){ $("
").appendTo("body"); } var ctx = "
"; $('#dsColumn_div').dialog({ title: '度量提取明细', width: 660, height: 400, closed: false, cache: false, modal: true, toolbar:null, content: ctx, toolbar:[{iconCls: 'icon-export',text:"导出",handler: function(){ location.href = 'exportDetail.action'; }}], onClose:function(){ $('#dsColumn_div').dialog('destroy'); }, buttons:[{ text:'关闭', iconCls:"icon-ok", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); var cols = []; for(i=0; i维度取Top:
"; $('#pdailog').dialog({ title: '维度取Top', width: 360, height: 170, closed: false, cache: false, modal: true, toolbar:null, content: ctx, buttons:[{ text:'完成', iconCls:"icon-ok", handler:function(){ var top = $("#pdailog #top").numberbox("getValue"); var type = $("#pdailog #type").val(); dim.top = top; dim.topType = type; $('#pdailog').dialog('close'); tableView(comp, compId); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $("#pdailog #top").numberbox({width:180, height:28}); } function kpisort(tp){ var kpiId = curTmpInfo.ckid; var compId = curTmpInfo.compId.replace("T", ""); var comp = findCompById(compId); for(i=0; i= dims.length - 1){ msginfo('无效移动。', "error"); return; }else{ var tp = dims[i + 1]; dims[i + 1] = dims[i]; dims[i] = tp; curTmpInfo.isupdate = true; tableView(comp, compId); $("#dimoptmenu").menu("hide"); return; } } break; } } } function getTableHeadJson(compId){ // var comp = findCompById(compId); // var json = {comp:comp, filter:[["92"]] }; // $.ajax({ // type:"POST", // async:false, // url:"Table2JSON!test.action", // dataType:"json", // data: {json:JSON.stringify(json),"_hideMVDiv":"true"}, // success: function(resp){ // // } // }) var comp = findCompById(compId); if(comp == null){ msginfo("组件不存在!", "error"); } var ret; $.ajax({ type:"POST", async:false, url:"Table2JSON.action", dataType:"json", data: {json:JSON.stringify(comp),"_hideMVDiv":"true"}, success: function(resp){ ret = resp; } }); return ret; } function findDimById(dimId, dims){ var ret = null; if(!dims || dims == null){ return ret; } for(var i=0; i