if($ == undefined){ $ = jQuery; } var dataType = ["String", "Int", "Double", "Date", "Datetime"]; function initdsetTable(){ if($("#dsettable").size() > 0){ $("#dsettable").datagrid("load", {t:Math.random()}); return; } var ctx = "
名称主表数据源连接
"; $("#optarea").html(ctx); $("#dsettable").datagrid({ singleSelect:true, collapsible:false, pagination:false, border:false, fit:true, url:'listDataset.action', toolbar:[{ text:'新增', iconCls:'icon-add', handler:function(){ newdset(false); } },{ text:'修改', iconCls:'icon-edit', handler:function(){ var row = $("#dsettable").datagrid("getChecked"); if(row == null || row.length == 0){ $.messager.alert("出错了。","您还未勾选数据。", "error"); return; } newdset(true, row[0].dsetId); } },{ text:"刷新", iconCls:"icon-reload", handler:function(){ var row = $("#dsettable").datagrid("getChecked"); if(row == null || row.length == 0){ $.messager.alert("出错了。","您还未勾选数据。", "error"); return; } __showLoading(); $.ajax({ type:'get', url:'reloadDset.action', dataType:'json', data:{"dsetId":row[0].dsetId, "dsid":row[0].dsid}, success: function(dt){ __hideLoading(); if(dt.result == 0){ $.messager.alert("出错了。",dt.msg, "error"); }else{ $.messager.alert("成功了。","字段刷新成功。", "info"); } }, error:function(){ __hideLoading(); $.messager.alert("出错了。","系统异常。", "error"); } }); } },{ text:'删除', iconCls:'icon-cancel', handler:function(){ var row = $("#dsettable").datagrid("getChecked"); if(row == null || row.length == 0){ $.messager.alert("出错了。","您还未勾选数据。", "error"); return; } delDset(row[0].dsetId); } }] }); } function delDset(dsetId){ if(confirm("是否确认删除?")){ $.ajax({ url:'deleteDset.action', data: {dsetId:dsetId}, type:'POST', dataType:'json', success:function(){ $("#dsettable").datagrid("reload", {t:Math.random}); }, error:function(){ msginfo("系统出错,请查看后台日志。"); } }); } } function newdset(isupdate, dsetId){ var transform = {}; var treeStr = ""; var tables = ""; if(isupdate){ $.ajax({ type: "POST", async:false, url: "getDatasetCfg.action", dataType:"json", data: {"dsetId": dsetId}, success: function(resp){ transform = resp; } }); treeStr = treeStr + "
  • "+transform.master+"
  • "; //添加主表 tables = tables + ""; var tbs = []; for(i=0; transform.joininfo&&i"+t+""; //添加关联表 }else{ continue; } } } //数据源列表 var dsls = ""; $.ajax({ type:'GET', url:'listDataSource.action', dataType:'JSON', data:{}, async:false, success: function(resp){ for(i=0; i"+t.dsname+""; } } }); var ctx = "
    数据集名称:
    数据源:
    选择表:
    待选表
      \" title=\"选择\" class=\"btn btn-primary btn-sm\">

      已选表
        "+treeStr+"

      主表: "+(isupdate?"(禁止更改)":"")+"
        "+(isupdate?"
        ":"")+"
        "; $('#pdailog').dialog({ title: isupdate?'编辑数据集':'创建数据集', width: 700, height: 470, closed: false, cache: false, modal: true, toolbar:null, onLoad:function(){ }, content: ctx, buttons:[{ text:'确定', iconCls:"icon-ok", handler:function(){ var name = $("#pdailog #name").val(); if(name == ''){ msginfo("请录入数据集名称。"); $("#pdailog #crtdataset").tabs("select", 0); $("#pdailog #name").focus(); return; } var cld = $("#selTablesTree").tree("getChildren"); if(cld == null || cld.length == 0){ msginfo("请选择表。"); $("#pdailog #crtdataset").tabs("select", 0); return; } //判断是否关联 if(cld.length > 1 && (!transform.joininfo || transform.joininfo.length != cld.length - 1)){ msginfo("请建立表关联。"); $("#pdailog #crtdataset").tabs("select", 1); return; } transform.name = name; transform.dsid = $("#pdailog #dsid").val(); transform.dsetId = isupdate?transform.dsetId:newGuid(); //新增需要获取字段 if(!isupdate){ $.ajax({ type:'post', async: false, url:'queryDatasetMeta.action', dataType:'json', data:{"dsid":transform.dsid, "cfg":JSON.stringify(transform)}, success: function(dt){ transform.cols = dt; } }); } __showLoading(); $.ajax({ type: "POST", async:false, url: isupdate?"updateDset.action":"saveDset.action", dataType:"HTML", data: {cfg:JSON.stringify(transform), priTable: transform.master, name:transform.name,dsid:transform.dsid, dsetId:transform.dsetId}, success: function(resp){ __hideLoading(); $('#pdailog').dialog('close'); $("#dsettable").datagrid("reload", {t:Math.random}); }, error:function(er){ msginfo("系统出错,请查看后台日志。"); __hideLoading(); } }); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#pdailog').dialog('close'); } }] }); //加载tabs $("#pdailog #crtdataset").tabs({fit:true,border:false,tabPosition:'left',onSelect:function(a, b){ if(b == 3){ reloadDynamicCol(transform); }else if(b == 2){ //加载表字段 var pp = $('#pdailog #crtdataset').tabs('getSelected'); var str = ""; str = str + ""; for(var i=0; i"; } str = str + "
        字段名显示名类型来源表操作
        "+m.name+"
        "+(m.dispName == '' ? " ":m.dispName)+"
        "+m.type+"
        "+m.tname+"
        "; $(pp).html(str); $("#crtdataset table.grid3 td button").click(function(){ var name = $(this).attr("cname"); var tname = $(this).attr("tname"); editDsColumn(name, transform, tname); }); } } }); $('#tablesearch').searchbox({ searcher:function(value,name){ __showLoading(); $.ajax({ type:'post', url:'listTables.action', dataType:'json', data:{dsid:$("#pdailog #dsid").val(), tname:value}, success: function(dt){ __hideLoading(); $("#allTablesTree").tree({ data: dt }); //隐藏已经选择的表 var cld = $("#selTablesTree").tree("getChildren"); for(i=0; i " + joininfo.ref + "." + joininfo.refKey; } } d.push(obj); } $("#masterTableTree").tree({ data: d, onDblClick:function(node){ jointableFunc(transform); } }); } }); } $("#mastertable").bind("change", function(){ updateColsFunc($(this).val()); transform.master = $(this).val(); //并且把选择表设置为主表 }); //如果是修改状态,获取主表的字段列表 if(isupdate){ updateColsFunc(transform.master); } } function editDsColumn(colId, dset, tname){ if($("#dsColumn_div").size() == 0){ $("
        ").appendTo("body"); } var tmp = null; for(var i=0; i"+dataType[i]+""; } var joinInfo = null; //查询表字段关联信息 for(j=0; dset.joininfo && j字段名:"+tmp.name+"
        显示名:
        类型:
        来源表:"+tmp.tname+"
        字段关联:"+(joinInfo==null?"字段无关联":dset.master+"."+joinInfo.col+" -> " + joinInfo.ref+"."+joinInfo.refKey)+(joinInfo!=null?"
        关联类型:"+(joinInfo.jtype=="all"?"全连接":(joinInfo.jtype=="left"?"左连接":"右连接")):"")+(joinInfo==null?"":"
        强制连接:"+(joinInfo.force=="y"?"是":"否"))+""; $('#dsColumn_div').dialog({ title: '编辑字段信息', width: joinInfo == null ? 350 : 450, height: joinInfo == null ? 240:300, 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(){ tmp.dispName = $("#dsColumn_div #coldispname").val(); tmp.type = $("#dsColumn_div #coltype").val(); tmp.isupdate = 'y'; //回写值 $("#crtdataset #"+tmp.tname+"_"+tmp.name+"_disp").text(tmp.dispName); $("#crtdataset #"+tmp.tname+"_"+tmp.name+"_tp").text(tmp.type); $('#dsColumn_div').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); } //动态字段 function reloadDynamicCol(transform){ var str = "新增"; str = str + ""; for(var i=0; transform.dynamic && i"; } if(!transform.dynamic || transform.dynamic.length==0){ str = str + ""; } str = str + "
        字段名表达式值类型操作
        "+o.name+""+o.expression.replace(/@/g,"'")+""+o.type+"
        无数据.
        "; var pp = $('#pdailog #crtdataset').tabs('getSelected'); $(pp).html(str); var dynamicfunc = function(ccol){ //如果没有字段信息,不添加 if(!transform.master){ msginfo("还未选择表,请先选择表。"); return; } var tps = ""; for(var i=0; i"+dataType[i]+""; } var cols = ""; $.ajax({ type:"post", async:false, url:"listTableColumns.action", dataType:"json", data:{tname:transform.master,dsid:$("#pdailog #dsid").val()}, success:function(resp){ for(k=0; k"+resp[k].name+" "; } } }); var ctx = "
        字段名:(英文字符)
        表 达 式:
        "+cols+"
        值类型:
        "; if($("#dsColumn_div").size() == 0){ $("
        ").appendTo("body"); } $('#dsColumn_div').dialog({ title: ccol ? '编辑动态字段' : '添加动态字段', width: 380, height: 290, 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 name = $("#dsColumn_div #colname").val(); var expression = $("#dsColumn_div #expression").val().replace(/'/g,"@"); if(name == ''){ msginfo("请录入字段名!", function(){ $("#dsColumn_div #colname").focus(); }); return; } if(ischinese(name)){ msginfo("字段名必须是英文字符。"); $("#dsColumn_div #colname").focus(); return; } if(expression == ''){ msginfo("请录入表达式!", function(){ $("#dsColumn_div #expression").focus(); }); return; } if(ccol){ ccol.name = name ccol.type = $("#dsColumn_div #valtype").val(); ccol.expression = expression }else{ var obj = {name:name,tname:transform.master,type:$("#dsColumn_div #valtype").val(),expression:expression}; if(!transform.dynamic){ transform.dynamic = []; } transform.dynamic.push(obj); } $('#dsColumn_div').dialog('close'); reloadDynamicCol(transform); } },{ 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); }); }; $("#crtdataset #dynamiccoldel").bind("click", function(){ if(!confirm("是否确认删除?")){ return; } var idx = -1; var name = $(this).attr("col"); for(i=0; i").appendTo("body"); } var tbs = ""; var tname = null; var cld = $("#selTablesTree").tree("getChildren"); for(i=0; i"+cld[i].text+""; if(tname == null){ tname = cld[i].id; } } } var getSlaveColumns = function(tn){ var slavecols = ""; //获取选取从表的表字段 if(tname != null){ $.ajax({ type:'post', async:false, url:'listTableColumns.action', dataType:'json', data:{"tname": tn,dsid:$("#pdailog #dsid").val()}, success: function(dt){ for(k=0; k" + dt[k].name + ""; } } }); } return slavecols; }; var ctx = "
        主表 "+$("#mastertable").val()+" 字段 "+node.id+"
              =>关联到=>
        从表:
        字段:
        方式:
        "; $('#dsColumn_div').dialog({ title: "关联维度表", width: 350, height: 240, 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(){ //建立关联关系 node.attributes.ref = $("#dsColumn_div #slavetable").val(); node.attributes.refKey = $("#dsColumn_div #slavetablecol").val(); node.attributes.jtype = $("#dsColumn_div #jtype").val(); $("#masterTableTree").tree("update", {target:node.target, text:node.id + " -> " + node.attributes.ref + "." + node.attributes.refKey, iconCls:"icon-coljoin"}); //给transform添加关联 if(!transform.joininfo){ transform.joininfo = []; } if(joinInfo){ joinInfo.col = node.id; joinInfo.ref = node.attributes.ref; joinInfo.refKey = node.attributes.refKey; joinInfo.jtype = node.attributes.jtype; }else{ transform.joininfo.push({col:node.id, ref:node.attributes.ref, refKey: node.attributes.refKey, jtype:node.attributes.jtype}); } $('#dsColumn_div').dialog('close'); } },{ text:'取消', iconCls:"icon-cancel", handler:function(){ $('#dsColumn_div').dialog('close'); } }] }); $("#slavetable").bind("change", function(){ var s = getSlaveColumns($(this).val()); $("#slavetablecol").html(s); }); } function findJoinInfoById(transform, col){ var ret = null; for(i=0; transform.joininfo&&i