/**
* 数据模板构造方法
*/
var BusQueryRuleEdit = function() {
}
// 属性及函数
BusQueryRuleEdit.prototype = {
/**
* 初始化
*/
init : function() {
var _self = this;
this.initDisplaySetting();
this.initSortField();
this.initFilter();
// this.initExportField();
this.selectTr();
// 绑定选择排序点击事件
$("#selectSort").click(function() {
_self.selectSort(_self)
});
},
initDisplaySetting : function() {
var tbl = '#displayFieldTbl';
// 处理选择
this.handChange(tbl);
this.handClick(tbl);
var tr = $($("#displayFieldTemplate .table-detail")[0]).clone(true,
true);
var displayFieldVal = $("#displayField").val();
if ($.isEmpty(displayFieldVal))
return;
var displayField = $.parseJSON(displayFieldVal);
var sb = new StringBuffer(),
fieldRightEl = $("[var='fieldRight']", tr),
hideFieldRightEl = $('
| ');
for (var i = 0, c; c = displayField[i++];) {
$("[var='index']", tr).html(i);
$("[var='name']", tr).html(c.name);
$("input[var='variable']", tr).attr("value", c.variable);
$("input[var='type']", tr).attr("value", c.type);
$("input[var='style']", tr).attr("value", c.style);
$("input[var='desc']", tr).attr("value", c.desc);
for (var j = 0, k; k = c.right[j++];) {
var rightHtml = this.getHtmlTd(k);
if (k.s == 0) {
if(!k.srid)
fieldRightEl.html(rightHtml);
else{
hideFieldRightEl.html(rightHtml);
fieldRightEl.after(hideFieldRightEl);
}
} else if (k.s == 1) {
$("[var='printRight']", tr).html(rightHtml);
}
}
sb.append(tr.html());
}
$(tbl).append(sb.toString());
},
/**
* 设置每行的显示的权限
*
* @param v
* 权限简称
* @param full
* 权限全称
*/
getHtmlTd : function(k) {
var v = k.type,
rightId = k.id,
rightName = k.name,
rightScript = k.script,
srid = k.srid||"",
source = k.source?JSON.stringify(k.source).replaceAll("\"","\'"):"";
if(rightScript||rightScript=="undefined")
rightScript = "";
var aryTd = [
'',
'',
'',
'',
'选择',
'',
'',
'',
'',
'',
'常用脚本',
''];
return aryTd.join('');
},
/**
* 选中行或反选
*
* @return void
*/
selectTr : function() {
$("tr.odd,tr.even").each(function() {
$(this).bind("mousedown", function(event) {
if (event.target.tagName == "TD") {
var strFilter = 'input:checkbox[class="pk"],input:radio[class="pk"]';
var obj = $(this).find(strFilter);
if (obj.length == 1) {
var state = obj.attr("checked");
obj.attr("checked", !state);
}
}
});
});
},
/**
* 处理选择改变
*/
handChange : function(obj) {
var _self = this;
$(obj).delegate("select.change_right", "change", function() {
var me = $(this), spanObj = me.next(), nextSpanObj = spanObj.next();
_self.showSpan(me.val(), spanObj);
var txtObj = $("textarea", spanObj), idObj = $("input:hidden",
spanObj);
txtObj.val("");
idObj.val("");
var nextTxtObj = $("textarea", nextSpanObj);
nextTxtObj.val("");
});
},
/**
* 显示权限的span
*/
showSpan : function(permissionType, spanObj) {
switch (permissionType) {
case "user" :
case "role" :
case "org" :
case "orgMgr" :
case "pos" :
spanObj.show();
spanObj.next().hide();
break;
case "script" :
spanObj.hide();
spanObj.next().show();
break;
case "everyone" :
case "none" :
spanObj.hide();
spanObj.next().hide();
break;
}
},
/**
* 处理选择
*/
handClick : function(obj) {
$(obj).delegate("a.link-get", "click", function() {
var me = $(this), txtObj = me.prev(), idObj = txtObj.prev(), selObj = me
.parent().prev(), selType = selObj.val();
// 选择回调
var callback = function(ids, names) {
txtObj.val(names);
idObj.val(ids);
};
switch (selType) {
case "user" :
UserDialog({
callback : callback
});
break;
case "role" :
RoleDialog({
callback : callback
});
break;
case "org" :
case "orgMgr" :
OrgDialog({
callback : callback
});
break;
case "pos" :
PosDialog({
callback : callback
});
break;
}
});
},
//====导出字段=====
initExportField:function(){
var tbl = '#exportFieldTbl';
// 处理选择
this.handChange(tbl);
this.handClick(tbl);
var tr = $($("#exportFieldTemplate .table-detail")[0]).clone(true,
true);
var tabletr = $($("#exportFieldTemplate .table-list")[0]).clone(true,
true);
var tableVal = $("#exportField").val();
if ($.isEmpty(tableVal))
return;
var table = $.parseJSON(tableVal);
var sb = new StringBuffer();
for (var l = 0, t; t = table[l++];) {
$("input[var='tablename']", tabletr).val(t.tableName);
$("input[var='tabledesc']", tabletr).val(t.tableDesc);
$("input[var='ismain']", tabletr).val(t.isMain);
$("[var='table']", tabletr).html(t.tableDesc+'('+t.tableName+")");
sb.append(tabletr.html());
for (var i = 0, c; c = t.fields[i++];) {
$("[var='index']", tr).html(i);
$("[var='name']", tr).html(c.name);
$("input[var='type']", tr).attr("value", c.type);
$("input[var='style']", tr).attr("value", c.style);
$("input[var='desc']", tr).attr("value", c.desc);
$("input[var='tablename']", tr).attr("value", c.tableName);
$("input[var='ismain']", tr).attr("value", c.isMain);
for (var j = 0, k; k = c.right[j++];) {
var rightHtml = this.getHtmlTd(k.type, k.id, k.name, k.script);
if (k.s == 2) {
$("[var='exportRight']", tr).html(rightHtml);
}
}
sb.append(tr.html());
}
}
$(tbl).append(sb.toString());
},
// =====================排序==============================================================================
/**
* 初始化排序
*/
initSortField : function() {
var tr = $($("#sortTemplate .table-detail tr")[0]).clone(true, true);
var sortFieldVal = $("#sortField").val();
if ($.isEmpty(sortFieldVal))
return;
var sortField = $.parseJSON(sortFieldVal);
for (var i = 0, c; c = sortField[i++];) {
try {
$("[var='name']", tr).html(c.name);
$("[var='desc']", tr).html(c.desc);
$("[var='source']", tr).html(c.source);
$("[var='sort']", tr).val(c.sort);;
} catch (e) {
}
var tr1 = tr.clone(true, true);
$("#sortTbl tbody").append(tr1);
}
},
/**
* 选择排序
*
* @param {}
* _self
*/
selectSort : function(_self) {
var tr = $($("#sortTemplate .table-detail tr")[0]).clone(true, true);
$("#sort-columnsTbl input:[name='select']:checked").each(function() {
var me = $(this), name = me.attr("fieldname"), desc = me
.attr("fielddesc");
var obj = $('#sortTbl');
// 查找该字段是否存在
if (_self.isExistName(obj,'name',name)) {
$("[var='name']", tr).html(name);
$("[var='desc']", tr).html(desc);
var tr1 = tr.clone(true, true);
$("#sortTbl tbody").append(tr1);
}
});
},
/**
* 判断选择是否存在
*/
isExistName : function(obj,o,name) {
var rtn = true;
obj.find("[var='"+o+"']").each(function() {
var me = $(this), n = me.html();
if (n == name) {
rtn = false;
return true;
}
});
return rtn;
},
// =====================过滤条件==============================================================================
/**
* 初始化过滤条件
*/
initFilter : function() {
this.handChange('#filterTbl');
this.handClick('#filterTbl');
var tr = $($("#filterTemplate .table-detail tr")[0]).clone(true, true);
var filterFieldVal = $("#filterField").val();
if ($.isEmpty(filterFieldVal))
return;
var filterField = $.parseJSON(filterFieldVal);
var sb = new StringBuffer();
for (var i = 0, c; c = filterField[i++];) {
var filter = {};
filter.name = c.name;
filter.key = c.key;
filter.type = c.type;
filter.condition = c.condition;
filter.right = c.right;
this.addFilterTr(tr, filter)
}
},
/**
* 增加过滤行的tr
*
* @param {}
* tr
* @param {}
* conf
*/
addFilterTr : function(tr, conf) {
var name = conf.name, key = conf.key, type = conf.type,condition = conf.condition, right = conf.right;
if(condition&& typeof condition =="object")
condition = JSON.stringify(condition);
$("[var='name']", tr).html(name);
$("[var='key']", tr).html(key);
$("[var='type']", tr).val(type);
$("[var='typeshow']", tr).html(type==2?'SQL':'条件脚本');
$("[var='condition']", tr).val(condition);
var filterRightEl = $("[var='filterRight']", tr),
hideFieldRightEl = $(' | ');
for (var j = 0, k; k = right[j++];) {
var rightHtml = this.getHtmlTd(k);
if (k.s == 3) {
if(!k.srid)
filterRightEl.html(rightHtml);
else{
hideFieldRightEl.html(rightHtml);
filterRightEl.after(hideFieldRightEl);
}
}
}
var tr1 = tr.clone(true, true);
$("#filterTbl tbody").append(tr1);
},
/**
* 增加过滤条件
*/
addFilter : function(conf) {
var _self = this, tableName = $('#tableName').val(),
tr = $($("#filterTemplate .table-detail tr")[0]).clone(
true, true);
var right = {};
right.type = 'none';
right.id = '';
right.name = '';
right.script = '';
this.filterDialog({
tableName : tableName,
callback : function(rtn) {
if (rtn) {
var filter = {},
type= rtn.type,
condition = (type==2?rtn.condition:JSON2.stringify(rtn.condition));
filter.name = rtn.name;
filter.key = rtn.key;
filter.type = type;
filter.condition = condition;
filter.right = right;
_self.addFilterTr(tr, filter);
}
}
});
},
/**
* 过滤的窗口
*
* @param {}
* conf
*/
filterDialog : function(conf) {
var dialogWidth = 750;
var dialogHeight = 500;
conf = $.extend({}, {
dialogWidth : dialogWidth,
dialogHeight : dialogHeight,
help : 0,
status : 0,
scroll : 0,
center : 1
}, conf);
var winArgs = "dialogWidth=" + conf.dialogWidth + "px;dialogHeight="
+ conf.dialogHeight + "px;help=" + conf.help + ";status="
+ conf.status + ";scroll=" + conf.scroll + ";center="
+ conf.center;
var url = __ctx
+ "/platform/bus/busQueryRule/filterDialog.ht?tableName="
+ conf.tableName;
url = url.getNewUrl();
/*var rtn = window.showModalDialog(url, conf, winArgs);
if (rtn && conf.callback) {
conf.callback.call(this, rtn);
}*/
var that =this;
/*KILLDIALOG*/
DialogUtil.open({
height:conf.dialogHeight,
width: conf.dialogWidth,
title : '',
url: url,
isResize: true,
//自定义参数
conf: conf,
sucCall:function(rtn){
if (rtn && conf.callback) {
conf.callback.call(that, rtn);
}
}
});
},
/**
* 删除过滤条件
*/
delFilter : function() {
this.delSelectTr("filterTbl");
},
/**
* 编辑过滤条件
*/
editFilter : function(obj) {
var tr = $(obj).parents("tr"), filter = {};
filter.name = $("[var='name']", tr).html();
filter.key = $("[var='key']", tr).html();
filter.type = $("[var='type']", tr).val();
filter.condition = $("[var='condition']", tr).val();
this.editFilterDialog(tr, filter)
},
/**
* 编辑过滤条件窗口
*
* @param {}
* tr
* @param {}
* filter
*/
editFilterDialog : function(tr, filter) {
var _self = this,
tableName = $('#tableName').val();
this.filterDialog({
tableName : tableName,
filter : filter,
callback : function(rtn) {
if (rtn) {
var type =rtn.type;
var condition = (type==2?rtn.condition:JSON2.stringify(rtn.condition));
$("[var='name']", tr).html(rtn.name);
$("[var='key']", tr).html(rtn.key);
$("[var='type']", tr).val(type);
$("[var='typeshow']", tr).html(type==2?'SQL':'条件脚本');
$("[var='condition']", tr).val(condition);
}
}
});
},
// =====================通用的处理方法==============================================================================
/**
* 切换分页
*/
switchNeedPage : function(obj) {
var me = $(obj), pagSize = $("#spanPageSize");
var isNeedPage = me.val();
if (isNeedPage == 1) {
pagSize.show();
} else {
pagSize.hide();
}
},
/**
* 删除TR
*/
delTr : function(obj) {
$(obj).closest("tr").remove();
},
/**
* 删除选择的tr
*
* @param {}
* obj 选择的tr的ID
*/
delSelectTr : function(obj) {
var _self = this;
$("#" + obj + " input:[name='select']:checked").each(function() {
_self.delTr(this);
});
},
/**
* 上下移动
*
* @param {}
* obj
* @param {}
* isUp 是否上移
*/
moveTr : function(obj, isUp) {
var thisTr = $(obj).parents("tr");
if (isUp) {
var prevTr = $(thisTr).prev();
if (prevTr) {
thisTr.insertBefore(prevTr);
}
} else {
var nextTr = $(thisTr).next();
if (nextTr) {
thisTr.insertAfter(nextTr);
}
}
},
/**
* 选择脚本
*
* @param {}
* obj
*/
selectScript : function(obj, isNext) {
var linkObj = $(obj), txtObj = {};
if (isNext)
txtObj = linkObj.next()[0];
else
txtObj = linkObj.prev()[0];
if (txtObj) {
ScriptDialog({
callback : function(script) {
$.insertText(txtObj, script);
}
});
}
},
/**
* 处理选择字段赋值
*
* @param {}
* obj
*/
handSelect : function(obj) {
$(obj).delegate("select[var='name']", "change", function() {
var me = $(this), text = me.children('option:selected').text();
tr = me.closest("tr");
var desc = $("[var='desc']", tr);
desc.val(text);
});
}
};
var __BusQueryRule__ = new BusQueryRuleEdit();// 默认生成一个对象