if($ == undefined){ $ = jQuery; } var dateformat = ['yyyymmdd', 'yyyy-mm-dd', 'yyyy年mm月dd日', 'yyyymm', 'yyyy-mm', 'yyyy年mm月', 'yyyy', 'yyyy年']; function initcubeTable(){ if($("#cubetable").size() > 0){ $("#cubetable").datagrid("load", {t:Math.random()}); return; } var ctx = "
标识立方体名称立方体说明数据集
"; $("#optarea").html(ctx); $("#cubetable").datagrid({ singleSelect:true, collapsible:false, pagination:false, border:false, fit:true, url:'listCube.action', toolbar:[{ text:'新增', iconCls:'icon-add', handler:function(){ newCube(false); } },{ text:'修改', iconCls:'icon-edit', handler:function(){ var row = $("#cubetable").datagrid("getChecked"); if(row == null || row.length == 0){ $.messager.alert("出错了。","您还未勾选数据。", "error"); return; } newCube(true, row[0].cubeId); } },{ text:'删除', iconCls:'icon-cancel', handler:function(){ var row = $("#cubetable").datagrid("getChecked"); if(row == null || row.length == 0){ $.messager.alert("出错了。","您还未勾选数据。", "error"); return; } delCube(row[0].cubeId); } }] }); } function delCube(id){ if(confirm("是否确认删除?")){ $.ajax({ type:"POST", url:"delCube.action", dataType:"json", data:{cubeId:id}, success:function(){ $('#cubetable').datagrid('load',{ t:Math.random() }); }, error:function(){ msginfo("删除立方体出错。"); } }); } } function newCube(isupdate, cubeId){ //清空 delObj 对象, 这个对象用在编辑时,判断哪些内容被删除了。 window.delObj = []; var cube; if(isupdate){ $.ajax({ type:"POST", url:"getCube.action", async: false, dataType:"JSON", data:{cubeId:cubeId}, success:function(resp){ cube = resp; } }); } //数据集 var dsetls = ""; if(isupdate){ dsetls = ""; }else{ $.ajax({ type:"POST", url:"listDataset.action", async: false, dataType:"JSON", data:{}, success:function(resp){ for(i=0; i"+r.name+'('+r.priTable+')'+""; } } }); } //立方体 var cstr = "



      "; var ctx = "
      立方体名称:
      立方体说明:
      对应数据集:"+(isupdate?" (禁止修改)":"")+"
      "+cstr+"
      "; $('#pdailog').dialog({ title: isupdate?'编辑立方体':'新建立方体', width: 760, height: 490, closed: false, cache: false, modal: true, toolbar:null, onLoad:function(){ }, content: ctx, buttons:[{ text:'确定', iconCls:"icon-ok", handler:function(){ var name = $("#pdailog #name").val(); var dsetId = $("#pdailog #dsetId").val(); var note = $("#pdailog #note").val(); if(name == ''){ $("#crtdataset").tabs("select", 0); msginfo("请填写立方体名称!"); return; } var c = {}; c.cubeName = name; c.desc = note; c.dsetId = dsetId; if(isupdate){ c.cubeId = cube.cubeId; } if(savecubecfg(c, isupdate)){ $('#pdailog').dialog('close'); } } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); $(".delcolbtn").linkbutton({plain:true, "iconCls":"icon-cancel"}); $("#crtfz,#crtcalckpi,#dim_editbtn,#dim_delbtn,#adddynacol").linkbutton({}); $("#crtdataset").tabs({}); //初始化左边树形状 var leftTreeView = function(dset, cube){ // var cld = []; // var dt = [{id:'leftroot',text:dset.master,iconCls:'icon-table', children:cld}]; //获取表 var tbs = []; var tabExist = function(tname){ var ret = false; for(k=0; k 0){ var dynas = {id:'dynaroot', text:"动态字段", iconCls:'icon-table', children:[]}; dt.push(dynas); for(i=0; i"; var keystr = ""; var txtstr = ""; var tables = []; for(i=0; i"+tables[i]+""; } var fmtstr = ""; for(i=0; i"+dateformat[i]+""; } ctx = "
      维度字段:"+right.attributes.col+"
      别名:"+right.attributes.alias+"
      显示名称:
      维度类型:
      维度格式:
      维度对应表:
      维度Key字段:
      维度Text字段:
      排序方式:
      "; }else if(right.attributes.tp == 'kpi'){ var tpstr = ""; for(i=0; i"+atp[i]+""; } ctx = "
      度量字段:"+right.attributes.col+"
      别名:"+right.attributes.alias+"
      显示名称:
      " + "计算方式:
      " + "度量单位:
      " + "格式化:" + ftmstr("kpifmt","inputform2",right.attributes.fmt?right.attributes.fmt:"") + "
      度量解释:
      "; }else if(right.attributes.tp == 'group'){ ctx = "
      分组名称:
      "; } if($("#dsColumn_div").size() == 0){ $("
      ").appendTo("body"); } $('#dsColumn_div').dialog({ title: right.attributes.tp == 'group' ? "编辑分组" : "编辑维度及度量", width: 350, height: right.attributes.tp == 'group' ? 150 :340, closed: false, cache: false, modal: true, toolbar:null, content:ctx, onLoad:function(){}, onClose:function(){ $('#dsColumn_div').dialog('destroy'); }, buttons:[{ text:'确定', iconCls:"icon-ok", handler:function(){ if(right.attributes.tp == 'kpi'){ right.attributes.aggre = $("#dsColumn_div #kpiaggre").val(); right.attributes.fmt = $("#dsColumn_div #kpifmt").val(); right.attributes.unit = $("#dsColumn_div #kpiunit").val(); right.attributes.dispName = $("#dsColumn_div #kpiname").val(); right.attributes.kpinote = $("#dsColumn_div #kpinote").val(); right.attributes.isupdate = "y"; //表示指标已经更改过了。 $("#cuberighttree").tree("update", {target:right.target, text: right.attributes.aggre+ "(" + right.attributes.dispName+")"}) }else if(right.attributes.tp == 'dim'){ //设置了时间类型维度后,必须设置维度格式 var dtp = $("#dsColumn_div #dimtype").val(); var dtfmt = $("#dsColumn_div #dateformat").val(); if(dtp != "" && (dtp == "year" || dtp == "month" || dtp == "quarter" || dtp == "day") && dtfmt == "" ){ msginfo("请选择时间维度格式。", function(){ $("#dsColumn_div #dateformat").select(); }); return; } right.attributes.dispName = $("#dsColumn_div #dimname").val(); right.attributes.dimtype = dtp; right.attributes.colTable = $("#dsColumn_div #colTable").val(); right.attributes.colkey = $("#dsColumn_div #colkey").val(); right.attributes.coltext = $("#dsColumn_div #coltext").val(); right.attributes.dimord = $("#dsColumn_div #dimord").val(); right.attributes.dateformat = dtfmt; right.attributes.isupdate = "y"; //表示维度已经更改过了。 $("#cuberighttree").tree("update", {target:right.target, text:$("#dsColumn_div #dimname").val()}) }else if(right.attributes.tp == 'group'){ right.attributes.dispName = $("#dsColumn_div #groupname").val(); //right.attributes.grouptype = $("#dsColumn_div #grouptype").val(); right.attributes.isupdate = "y"; //表示分组已经更改过了。 $("#cuberighttree").tree("update", {target:right.target, text:$("#dsColumn_div #groupname").val()}) } $('#dsColumn_div').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); if(right.attributes.tp == 'dim'){ var upcolfunc = function(tname, colkey, coltext){ var keystr = ""; var txtstr = ""; var cols = $("#cubelefttree").tree("getRoots"); for(i=0; i"+t.id+""; txtstr = txtstr + ""; } } } $("#dsColumn_div #colkey").html(keystr); $("#dsColumn_div #coltext").html(txtstr); } $("#dsColumn_div #colTable").change(function(){ upcolfunc($(this).val()); }); if(right.attributes.colTable && right.attributes.colTable != ''){ upcolfunc(right.attributes.colTable, right.attributes.colkey, right.attributes.coltext); } } } function addgroup(){ if($("#dsColumn_div").size() == 0){ $("
      ").appendTo("body"); } var gctx = "
      分组名称:
      "; $('#dsColumn_div').dialog({ title: "创建维度分组", width: 300, height: 180, closed: false, cache: false, modal: true, toolbar:null, content:gctx, onLoad:function(){}, onClose:function(){ $('#dsColumn_div').dialog('destroy'); }, buttons:[{ text:'确定', iconCls:"icon-ok", handler:function(){ var name = $("#dsColumn_div #groupname").val(); if(name == ''){ msginfo("请填写分组名称!"); $("#dsColumn_div #groupname").focus(); return; } var cid = newGuid(); var dt = {id:cid,text:name, "iconCls":"icon-group", attributes:{tp:'group',dispName:name,drag:true}}; $("#cuberighttree").tree("append",{parent:$("#cuberighttree").tree("find", "cubewd").target, data:[dt]}); $('#dsColumn_div').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); } function editCalcKpi(update, kpiId){ var kpi; if(update){ kpi = $("#cuberighttree").tree("getSelected"); } var atp = ["sum","avg","count","count(distinct)", "max", "min"]; var tpstr = ""; for(i=0; i"+atp[i]+""; } //查询已选指标 var kpiStr = ""; var ls = []; var roots = $("#cubelefttree").tree("getRoots"); for(i=0; i"+ k.col+" "; } kpiStr = kpiStr + "
      "; for(i=0; i"+ atp[i]+" "; } var tempId = "k_" + Math.round(Math.random() * 100000); var ctx = "
      度量标识:(英文字符)
      显示名称:
      表 达 式:
      "+kpiStr+"
      计算方式:
      度量单位:
      格式化:" + ftmstr("kpifmt","inputform2",(kpi?kpi.attributes.fmt:"")) + "
      指标解释:
      "; if($("#dsColumn_div").size() == 0){ $("
      ").appendTo("body"); } $('#dsColumn_div').dialog({ title: update?"编辑表达式度量":"创建表达式度量", width: 420, height: 390, closed: false, cache: false, modal: true, toolbar:null, content:ctx, onLoad:function(){}, onClose:function(){ $('#dsColumn_div').dialog('destroy'); }, buttons:[{ text:'确定', iconCls:"icon-ok", handler:function(){ var alias = $("#dsColumn_div #alias").val(); var name = $("#dsColumn_div #kpiname").val(); var expression = $("#dsColumn_div #expression").val(); if(alias == ""){ msginfo("请填写度量标识。"); $("#dsColumn_div #alias").focus(); return; } if(ischinese(alias)){ msginfo("度量标识只能是英文字符。"); $("#dsColumn_div #alias").focus(); return; } if(name == ''){ msginfo("请填写度量名称。"); $("#dsColumn_div #kpiname").focus(); return; } if(expression == ''){ msginfo("请填写度量表达式。"); $("#dsColumn_div #expression").focus(); return; } if(update){ kpi.attributes.aggre = $("#dsColumn_div #kpiaggre").val(); kpi.attributes.fmt = $("#dsColumn_div #kpifmt").val(); kpi.attributes.unit = $("#dsColumn_div #kpiunit").val(); kpi.attributes.dispName = name; kpi.attributes.kpinote = $("#dsColumn_div #kpinote").val(); kpi.attributes.col = expression; kpi.attributes.alias = $("#dsColumn_div #alias").val(); kpi.attributes.isupdate = "y"; //表示计算指标已经更改过了。 $("#cuberighttree").tree("update", {target:kpi.target, text:kpi.attributes.aggre+"("+name+")"}); }else{ var cid = findCubeMaxId($("#cuberighttree").tree("find","cubedl").target); var o = {id:cid, text:$("#dsColumn_div #kpiaggre").val()+"("+name+")",attributes:{tp:"kpi",calc:true,drag:true,aggre:$("#dsColumn_div #kpiaggre").val(),col:expression, alias:$("#dsColumn_div #alias").val(), dispName:name,tname:"",fmt:$("#dsColumn_div #kpifmt").val(),unit:$("#dsColumn_div #kpiunit").val(),kpinote:$("#dsColumn_div #kpinote").val(),calcKpi:1},iconCls:"icon-ckpi"}; $("#cuberighttree").tree("append", {parent:$("#cuberighttree").tree("find", "cubedl").target, data:[o]}); } $('#dsColumn_div').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); $("#dsColumn_div .actColumn button").bind("click", function(){ var txt = $(this).attr("name"); insertText2focus(document.getElementById("expression"), txt+" "); }); } function findCubeMaxId(target){ var ret = 0; var ls = $("#cuberighttree").tree("getChildren", target); for(i=0; i ret){ ret = Number(ls[i].id); } } return ret + 1; } function cube2ds(){ var right = $("#cuberighttree").tree("getSelected"); if(right == null || !right.attributes){ $.messager.alert("出错了","您还未选择需要删除的度量或维度。","error"); return; } if(right.attributes.tp == 'group'){ if($("#cubelefttree").tree("getChildren", right.target).length > 0){ $.messager.alert("出错了","您要删除的分组含有维度,不能删除。", "error"); return; } } if(right.attributes.tp != 'group'){ //分组删除不用关联左边树 var id = right.attributes.alias; //通过 refId 引用s数据集的字段ID var cld = []; var ls = $("#cubelefttree").tree("getRoots"); for(i=0; i"; str = str + ""; str = str + ""; return str; } function savecubecfg(pageJson, update){ var cubeDim = []; var dims = $("#cuberighttree").tree("getChildren", $("#cuberighttree").tree("find", "cubewd").target); if(dims.length == 0){ $("#crtdataset").tabs("select", 1); msginfo("您还未配置维度。"); return false; } var curGroup = null; for(i=0; i