为页面对象添加pageParamCall函数简化页面参数函数调用,并修改相关代码

This commit is contained in:
datagear 2018-12-13 14:31:45 +08:00
parent 9d52f185f6
commit 1b1b05861a
18 changed files with 143 additions and 102 deletions

View File

@ -11,6 +11,7 @@ save=\u4FDD\u5B58
submit=\u63D0\u4EA4
reset=\u91CD\u7F6E
cancel=\u53D6\u6D88
cancelAll=\u5168\u90E8\u53D6\u6D88
confirm=\u786E\u5B9A
select=\u9009\u62E9
refresh=\u5237\u65B0

View File

@ -86,14 +86,12 @@ boolean batchSet = ("true".equalsIgnoreCase(getStringValue(request, "batchSet"))
var data = $(this).modelform("data");
var formParam = $(this).modelform("param");
var pageParam = po.pageParam();
var close = true;
//父页面定义了submit回调函数则优先执行
if(pageParam && pageParam.submit)
if(po.pageParam("submit"))
{
close = (pageParam.submit(data, formParam) != false);
close = (po.pageParamCall("submit", data, formParam) != false);
if(close && !$(this).modelform("isDialogPinned"))
po.close();
@ -130,8 +128,7 @@ boolean batchSet = ("true".equalsIgnoreCase(getStringValue(request, "batchSet"))
if(po.originalData)
po.originalData = $.unref($.ref(operationMessage.data));
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave(operationMessage.data) != false);
close = (po.pageParamCall("afterSave", operationMessage.data) != false);
if(close && !isDialogPinned)
po.close();

View File

@ -99,13 +99,11 @@ boolean isPrivatePropertyModel = ModelUtils.isPrivatePropertyModelTail(propertyP
var close = true;
var pageParam = po.pageParam();
//父页面定义了submit回调函数则优先执行
if(pageParam && pageParam.submit)
if(po.pageParam("submit"))
{
close = (pageParam.submit(propValue, formParam) != false);
close = (po.pageParamCall("submit", propValue, formParam) != false);
if(close && !$(this).modelform("isDialogPinned"))
po.close();
}
@ -139,8 +137,7 @@ boolean isPrivatePropertyModel = ModelUtils.isPrivatePropertyModelTail(propertyP
if(po.data)
$.model.propertyPathValue(po.data, po.propertyPath, operationMessage.data);
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave(operationMessage.data) != false);
close = (po.pageParamCall("afterSave", operationMessage.data) != false);
if(close && !isDialogPinned)
po.close();

View File

@ -130,10 +130,7 @@ boolean isPrivatePropertyModel = ModelUtils.isPrivatePropertyModelTail(propertyP
$.model.propertyPathValue(po.data, po.propertyPath, rowsData);
var pageParam = po.pageParam();
if(pageParam && pageParam.submit)
pageParam.submit(rowsData);
po.pageParamCall("submit", rowsData);
};
po.onModel(function(model)

View File

@ -111,9 +111,7 @@ else
{
po.executeOnSelects(function(rows)
{
var pageParam = po.pageParam();
var close = (pageParam && pageParam.submit ? pageParam.submit(rows) : undefined);
var close = po.pageParamCall("submit", rows);
if(close == undefined)
close = true;
@ -126,9 +124,7 @@ else
{
po.executeOnSelect(function(row)
{
var pageParam = po.pageParam();
var close = (pageParam && pageParam.submit ? pageParam.submit(row) : undefined);
var close = po.pageParamCall("submit", row);
if(close == undefined)
close = true;
@ -148,10 +144,8 @@ else
{
"afterSave" : function(data)
{
var pageParam = po.pageParam();
var close = (pageParam && pageParam.submit ? pageParam.submit(data) : undefined);
var close = po.pageParamCall("submit", data);
//单选默认关闭,多选默认不关闭
if(close == undefined)
close = (po.isMultipleSelect ? false : true);

View File

@ -14,8 +14,8 @@
<input id="${pageId}-editGridSwitch" type="checkbox" value="1" />
</div>
<div class="edit-grid-operation">
<button type="button" class="button-cancel highlight" style="display: none;"><fmt:message key='restore' /></button>
<button type="button" class="button-cancel-all highlight" style="display: none;"><fmt:message key='restoreAll' /></button>
<button type="button" class="button-cancel highlight" style="display: none;"><fmt:message key='cancel' /></button>
<button type="button" class="button-cancel-all highlight" style="display: none;"><fmt:message key='cancelAll' /></button>
<button type="button" class="button-save recommended" style="display: none;"><fmt:message key='save' /></button>
</div>
</div>

View File

@ -28,6 +28,7 @@ WebUtils.setPageId(request, editGridFormPageId);
(function(po)
{
po.element().hide();
po.formLabels.submit = "<fmt:message key='confirm' />";
})
(<%=editGridFormPageId%>);
</script>
@ -41,8 +42,11 @@ WebUtils.setPageId(request, gridPageId);
//编辑表格对应的模型会在initEditGrid函数中初始化
po.editGridModel = undefined;
po.editGridFormPage = <%=editGridFormPageId%>;
po.currentEditCell = undefined;
po.editGridSwitch = function()
{
return po.element("#${pageId}-editGridSwitch");
@ -136,6 +140,13 @@ WebUtils.setPageId(request, gridPageId);
po.beginEditCell = function($cell)
{
if($cell.is(po.currentEditCell))
return;
else if(po.currentEditCell != null)
po.cancelEditCell(po.currentEditCell);
po.currentEditCell = $cell;
$cell.addClass("edit-cell ui-state-highlight");
var text = $cell.text();
@ -156,8 +167,7 @@ WebUtils.setPageId(request, gridPageId);
var settings = po.table().DataTable().settings();
var cellProperty = $.getDataTablesColumnProperty(po.editGridModel, settings, cellIndex);
//po.editGridFormPage.form().empty();
po.editGridFormPage.element().appendTo($cell);
po.editGridFormPage.element().appendTo($cell).show().position({my: "left top", at: "left bottom"});
po.editGridFormPage.form().modelform(
{
@ -165,10 +175,14 @@ WebUtils.setPageId(request, gridPageId);
renderProperty : function(property)
{
return property == cellProperty;
}
},
submit : function()
{
alert("save cell");
return false;
},
labels : po.editGridFormPage.formLabels
});
po.editGridFormPage.element().show().position({my: "left top", at: "left bottom"});
};
po.storeEditCell = function($cell, value)
@ -191,9 +205,17 @@ WebUtils.setPageId(request, gridPageId);
else
po.markAsUnmodifiedCell($cell);
po.editGridFormPage.element().hide();
po.editGridFormPage.form().modelform("destroy");
po.editGridFormPage.element().appendTo(po.element());
po.currentEditCell = null;
var editGridFormPageEle = po.editGridFormPage.element();
if(editGridFormPageEle.parent().is($cell))
{
po.editGridFormPage.form().modelform("destroy");
editGridFormPageEle.hide();
editGridFormPageEle.appendTo(po.element());
}
};
po.cancelAllEditCell = function($editedCells)
@ -256,6 +278,8 @@ WebUtils.setPageId(request, gridPageId);
po.table().DataTable()
.on("click.dt", function(event)
{
var table = $(this).DataTable();
if(po.isEnableEditGrid)
{
event.stopPropagation();
@ -264,7 +288,8 @@ WebUtils.setPageId(request, gridPageId);
if(target.is("td"))
{
po.beginEditCell(target);
table.cell(".selected").deselect();
table.cell(target).select();
}
}
else
@ -272,6 +297,14 @@ WebUtils.setPageId(request, gridPageId);
}
})
.on("select", function(event, dataTable, type, indexes)
{
console.log("select");
})
.on("deselect", function(event, settings)
{
console.log("deselect");
})
.on("preDraw", function(event, settings)
{
//禁止表格重绘,比如排序
@ -281,6 +314,12 @@ WebUtils.setPageId(request, gridPageId);
return true;
});
po.element(".button-cancel", po.element(".edit-grid")).click(function()
{
if(po.currentEditCell != null)
po.cancelAllEditCell(po.currentEditCell);
});
po.element(".button-cancel-all", po.element(".edit-grid")).click(function()
{
var $editedCells = po.editedCells();

View File

@ -201,12 +201,7 @@ boolean readonly = ("true".equalsIgnoreCase(getStringValue(request, DriverEntity
{
success : function()
{
var pageParam = po.pageParam();
var close = true;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -170,9 +170,7 @@ boolean selectonly = ("true".equalsIgnoreCase(getStringValue(request, DriverEnti
{
po.executeOnSelect(function(row)
{
var pageParam = po.pageParam();
var close = (pageParam && pageParam.submit ? pageParam.submit(row) : undefined);
var close = po.pageParamCall("submit", row);
//单选默认关闭
if(close == undefined)

View File

@ -137,12 +137,7 @@
{
success : function()
{
var pageParam = po.pageParam();
var close = true;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -165,12 +165,7 @@
{
success : function(response)
{
var pageParam = po.pageParam();
var close = false;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -119,21 +119,31 @@ var ${pageId} =
},
/**
* 获取由open方法传递给此页面参数对象。
* 获取此页面参数对象。
* @param name 可选,页面参数对象属性名
*/
pageParam : function(name)
{
var pageParamObj = $.pageParam(this.element());
var ppo = $.pageParam(this.element());
if(name == undefined)
return pageParamObj;
return ppo;
else
{
return (pageParamObj ? pageParamObj[name] : undefined);
return (ppo ? ppo[name] : undefined);
}
},
/**
* 调用页面参数对象函数,参考$.pageParamCall。
*/
pageParamCall : function(args)
{
args = [this.element()].concat($.makeArray(arguments));
return $.pageParamCall.apply($, args);
},
/**
* 打开确认对话框。
* @param content 显示内容

View File

@ -150,12 +150,7 @@ boolean isPreview = "1".equals(getStringValue(request, "preview"));
<%if(isPreview){%>
po.element(".url-preview").text(url);
<%}else{%>
var pageParam = po.pageParam();
var close = true;
if(pageParam && pageParam.setSchemaUrl)
close = (pageParam.setSchemaUrl(url) != false);
var close = (po.pageParamCall("setSchemaUrl", url) != false);
if(close)
po.close();

View File

@ -200,12 +200,7 @@ boolean readonly = ("true".equalsIgnoreCase(getStringValue(request, SchemaContro
{
success : function()
{
var pageParam = po.pageParam();
var close = true;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -85,12 +85,7 @@
{
success : function(response)
{
var pageParam = po.pageParam();
var close = false;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -156,12 +156,7 @@ boolean isAdd = "saveAdd".equals(formAction);
{
success : function()
{
var pageParam = po.pageParam();
var close = true;
if(pageParam && pageParam.afterSave)
close = (pageParam.afterSave() != false);
var close = (po.pageParamCall("afterSave") != false);
if(close)
po.close();

View File

@ -144,9 +144,7 @@ boolean selectonly = ("true".equalsIgnoreCase(getStringValue(request, AbstractCo
{
po.executeOnSelect(function(row)
{
var pageParam = po.pageParam();
var close = (pageParam && pageParam.submit ? pageParam.submit(row) : undefined);
var close = po.pageParamCall("submit", row);
//单选默认关闭
if(close == undefined)

View File

@ -94,7 +94,7 @@
var $dialog = $("<div id='dialog-"+new Date().getTime()+"' class='dialog-content-container'></div>").appendTo(container);
if(options.pageParam)
$dialog.data("pageParam", options.pageParam);
$.pageParam($dialog, options.pageParam);
$._dialog($dialog, options);
$dialog.html(data);
@ -112,22 +112,67 @@
}
},
/*用于支持$.pageParam函数的元素CSS类名*/
PAGE_PARAM_BINDER_CLASS : "page-param-binder",
/**
* 获取由$.open打开的页面所传递的页面参数
* 如果没有将返回null
* 获取/设置页面参数设置页面参数使页面在加载完成后可以在内部获取此参数
*
* @param dom 任意dom元素
* @param $dom 必选任意dom元素
* @param param 可选要设置的参数
*/
pageParam : function(dom)
pageParam : function($dom, param)
{
var $dom = $(dom);
var dcc = $(dom).closest(".dialog-content-container");
if(dcc.length == 0)
return undefined;
else
if(param == undefined)
{
var dcc = $dom.closest("." + $.PAGE_PARAM_BINDER_CLASS);
return dcc.data("pageParam");
}
else
{
$dom.addClass($.PAGE_PARAM_BINDER_CLASS);
$dom.data("pageParam", param);
}
},
/**
* 调用页面参数函数
* 如果没有页面参数或者指定的函数返回undefined
*
* @param $dom 必选任意dom元素
* @param args... 可选页面参数是函数时函数参数页面参数是对象时[函数名, 函数参数]
*/
pageParamCall : function($dom, args)
{
var pageParam = $.pageParam($dom);
//没有页面参数
if(!pageParam)
{
return undefined;
}
//页面参数是函数
else if($.isFunction(pageParam))
{
var pargs = $.makeArray(arguments).slice(1);
pageParam.apply(window, pargs);
}
//页面参数是对象
else
{
if(arguments.length < 2)
throw new Error("The function name in the page param object to be call should be set");
var fun = pageParam[arguments[1]];
if(fun == undefined)
return undefined;
var pargs = $.makeArray(arguments).slice(2);
return fun.apply(pageParam, pargs);
}
},
/**