var validateData=null; /** * 初始化第一步的页面 * @param isAdd * @returns */ function initPage(isAdd){ initFirstStepLayout(); initFirstStepTablesTree(); if(!isAdd){ $("a.sbutton").hide(); } $("#first-next").click(function(){ if(scriptEditor){ scriptEditor.save(); } var resultMsg = validateFirstStepSetting(isAdd); if(resultMsg.status){ if(resultMsg.message){ $.ligerDialog.error(resultMsg.message); } return; } if(!isAdd){ initSecondStepUpdate(); }else{ initSecondStepAdd(); } }); $("#second-prev").click(function(){ $(".step-first").show(); $(".step-second").hide(); }); } /** *第一步页面的布局 */ function initFirstStepLayout(){ $("#firstLayout").ligerLayout( { leftWidth : 350, height: 500, onHeightChanged: heightChanged, allowLeftResize:false }); } /** *加载表/视图 树 *@return void */ function initFirstStepTablesTree(){ var dsName=$("#dsName").val(); if(!dsName){ return; } var setting = { async: {enable: false}, data: { key:{name:"name"}, simpleData: { enable: true, idKey: "id", pIdKey: "pid", rootPId: "0" } }, callback:{ onDblClick: zTreeOnDblClick } }; var url=__ctx+"/platform/system/jdbcDb/getTables.ht?dsName="+dsName; url=url.getNewUrl(); $.ligerDialog.waitting('正在加载数据,请等待...'); $.post(url,{},function(data){ var ztData =transDataToZtreeFormat(data); tablesTree=$.fn.zTree.init($("#tablesTree"), setting,ztData); //tablesTree.expandAll(true); $.ligerDialog.closeWaitting(); }); } /** * 第一步页面 * @returns void */ function initFirstStep(isAdd){ $("#first-next").click(function(){ if(!isAdd){ initStepSecondUpdate(); }else{ initStepSecondAdd(); } }); } /** * Validate first step setting * @param isAdd * @returns object:{status,message} * status:error code,non-zero error occurred * message:error message. */ function validateFirstStepSetting(isAdd){ var resultMsg={ status:0, message:"" }; var frm=$('#sysCustomDisplayForm').form(); if(!frm.handValidResult("#name")){ resultMsg.status=1; } if(isAdd){ if(!frm.handValidResult("#script")){ resultMsg.status=2; } if($("[name='dsName']").val()==""){ resultMsg.status=3; resultMsg.message="请选择数据源!"; return resultMsg; } validateData = validateScript(); if(!validateData.status){ resultMsg.status=4; resultMsg.message=validateData.resultMsg; return resultMsg; } if(!validateData.supportSubSelect){ resultMsg.status=5; resultMsg.message="脚本执行的结果必须能够作为子查询!"; return resultMsg; } } return resultMsg; } /** * Validate second step setting * @param isAdd * @returns object:{status,message} * status:error code,non-zero error occurred * message:error message. */ function validateSecondStepSetting(isAdd){ var resultMsg = { status : 0, message : "" }; var template = $("#template").val(); if (!template) { resultMsg.status = 1; resultMsg.message = "请设置模板!"; return resultMsg; } var setting = $("#setting").val(); if (!setting) { resultMsg.status = 2; resultMsg.message = "请设置模板参数!"; return resultMsg; } return resultMsg; } /**初始化第二步页面----更新 * @returns */ function initSecondStepUpdate(){ //initial selected columns var fields = $("#fieldSetting").val(); if(!fields){ fields=$("#fields").val(); } initColumns($.parseJSON(fields)); //initial condition setting var conditions = $("#conditionField").val(); initConditions($.parseJSON(conditions)); $(".step-first").hide(); $(".step-second").show(); } /** * 始化第二步页面----添加 */ function initSecondStepAdd(){ var fields=validateData.sqlFields; //initial selected columns initColumns(fields); initConditions([]); $(".step-first").hide(); $(".step-second").show(); $("#fields").val(JSON2.stringify(fields)); }; /** *验证Script的有效性 */ function validateScript(){ var dsName=$("[name='dsName']").val(); var script=$("[name='script']").val(); var url=__ctx+ "/platform/system/sysCustomDisplay/validateScript.ht"; var params={ dsName:dsName, script:script }; var rtn; $.ajax({ url:url, data:params, async:false }).done(function(data){ rtn=data; }); return rtn; } /** *更改模板 */ function templateChangeHandler(obj){ $("#conditionField").val(''); $("#setting").val(''); } /** *设置模板参数 */ function settingTemplate(){ var file=$("#template").val(); if(!file){ $.ligerDialog.error("请先选择一个模板!"); return; } var settings = getAllSetting(); $("#fieldSetting").val(JSON2.stringify(settings.fieldSetting)); $("#conditionField").val(JSON2.stringify(settings.conditionField)); var setting = $.parseJSON($("#setting").val()); var fields = settings.fieldSetting; if(!fields){ fields=$.parseJSON($("#fields").val()); } var params={ fields:fields, setting:setting }; openSettingTemplateDialog(params) } /** *打开设置模板对话框 */ function openSettingTemplateDialog(params){ var setting = $("#template").find("option:selected").attr("setting"); var winArgs="dialogWidth=900px;dialogHeight=600px;help=0;status=0;scroll=0;center=1"; var url=__ctx+setting; url=url.getNewUrl(); var rtn = window.showModalDialog(url,params,winArgs); if(rtn){ // $("#fieldSetting").val(JSON2.stringify(rtn.fieldSetting)); $("#setting").val(JSON2.stringify(rtn.setting)); } } /* *自定义外部表单并提交 */ function customFormSubmit(options){ var id=$("#id").val(); var name=$("#name").val(); var script=$("#script").val(); var scriptType=$("#scirptType").val(); var description=$("#description").val(); var fieldSetting=$("#fieldSetting").val(); var setting=$("#setting").val(); var conditionField=$("#conditionField").val(); var dsName=$("#dsName").val(); var dsAlias=$("#dsAlias").val(); var template=$("#template").val(); // var dspTemplate=$("#dspTemplate").val(); var paged=$("input[name='paged']:checked").val(); var pageSize=$("#pageSize").val(); var json={ id:id, name:name, description:description, script:script, scriptType:scriptType, setting:setting , fieldSetting:fieldSetting, conditionField:conditionField , dsName:dsName , dsAlias:dsAlias, template:template, // dspTemplate:dspTemplate, paged:paged, pageSize:pageSize }; var form = $('
'); var input = $(""); input.val(JSON2.stringify(json)); form.append(input); form.ajaxForm(options); form.submit(); } /**布局大小改变的时候通知tab,面板改变大小 * @param options * @returns */ function heightChanged(options){ $("#tablesTree").height(options.middleHeight -90); }; /** *TablesTree 树节点双击元事件 */ function zTreeOnDblClick(event, treeId, treeNode) { if(treeNode.id=='table'||treeNode.id=='view'||treeNode.id=='0'){ return; } if(treeNode.isParent){ return; } var text=treeNode.name; var pos=scriptEditor.getCursor(); scriptEditor.replaceRange(text,pos); // var textArea=document.getElementById("script"); // $.insertText(textArea,treeNode.name); }; /** *将从__ctx+"/platform/system/jdbcDb/getTables.ht返回的数据转换成ztree SimpleData接受的数据格式 */ function transDataToZtreeFormat(data){ //节点的Type字段: 1-表父节点;2-视图的父节点;3-表;4-视图;5-表列;6-视图列 var tables = data.tables; var views=data.views; var ztData=[ {name:"数据表",id:"table",pid:"0",type:1}, {name:"视图",id:"view",pid:"0",type:2} ]; for(var i=0;i\n\t"; text+=select; text+="\nFROM\n\t"; var from =fromItems.join(",\n\t")||"<选择的表>\n\t"; text+=from; text+="\nWHERE\n\t<条件>"; // $.insertText(document.getElementById("script"),text); var pos=scriptEditor.getCursor(); scriptEditor.replaceRange(text,pos); break; } } /** *初始化数据列的表 */ function initColumns(fields){ var columnsTbl = $("#columnsTbl tbody").html(""); for(var i=0;i/////////////// */ function constructColumnTr(field){ var index = field.index; var type = field.type; var name = field.name; var qualifiedName=field.qualifiedName; var label=field.label; var comment = field.comment; if(!comment){ comment=label; } // var display=false; // if(typeof(field.display)!='undefined'){ // display = field.display; // } //first td checkbox var $tdChk = $(""); var $inputChk = $("") $inputChk.attr("name","fieldCheckBox"); $inputChk.attr("type","checkbox"); $tdChk.append($inputChk); $inputHidden=$("") $inputHidden.val(JSON2.stringify(field)); $tdChk.append($inputHidden); //second td field name var $tdName = $(""); $tdName.append(name); //third td field comment var $tdComment = $(""); var $inputComment=$(""); $inputComment.attr("name","fieldComment"); $inputComment.val(comment); $tdComment.append($inputComment); //four td column select checkedbox // var $tdSelect = $(""); // var $checkbox=$(""); // $checkbox.attr("name","fieldDisplay"); // $checkbox.attr("type","checkbox"); // $checkbox.attr("fieldName",name); // $tdSelect.append($checkbox); //Tr var $tr=$(""); $tr.append($tdChk); $tr.append($tdName); $tr.append($tdComment); // $tr.append($tdSelect); return $tr; } /** *绑定选择条件点击事件 */ function selectCondition(){ $("#columnsTbl input:[name='fieldCheckBox']:checked").each(function(){ var field=$.parseJSON($(this).closest("tr").find("input[type='hidden']").val()); var $fieldComment = $(this).closest("tr").find("input[name='fieldComment']"); var name = field.name; var type = field.type; var label = field.label; var index = field.index; var qualifiedName=field.qualifiedName; var comment = $fieldComment.val(); // var qualifiedName = $fieldComment.attr("fieldQualifiedName"); var condition={ joinType:"AND", name:name, qualifiedName:qualifiedName, label:label, type:type, operate:'=', comment:comment, value:"", valueFrom:1 }; var tr = constructConditionTr(condition); $("#conditionTbl tbody").append(tr); }); }; /* *构造条件列的 */ function constructConditionTr(condition) { var joinType = condition.joinType; var type = condition.type; var name = condition.name; var qualifiedName = condition.qualifiedName; var label = condition.lebel; var comment = condition.comment; var cond = condition.operate; var value = condition.value; var valueFrom = condition.valueFrom; var constructOption = function(cond1, cond2, text) { if (!text) { text = cond2; } var $option = $("