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 = $("");
var $selectJoinType = $("");
$selectJoinType.append(constructOption(joinType, "AND"));
$selectJoinType.append(constructOption(joinType, "OR"));
$tdJoinType.append($selectJoinType);
$hiddenInput = $("");
$hiddenInput.val(JSON2.stringify(condition));
$tdJoinType.append($hiddenInput);
//名称
var $tdName = $("