first commit
This commit is contained in:
388
bin/WebRoot/JS/extEasyUI.js
Normal file
388
bin/WebRoot/JS/extEasyUI.js
Normal file
@ -0,0 +1,388 @@
|
||||
var ext = ext || {};
|
||||
|
||||
/**
|
||||
* 更改easyui加载panel时的提示文字
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
$.extend($.fn.panel.defaults, {
|
||||
loadingMessage : '加载中....'
|
||||
});
|
||||
|
||||
/**
|
||||
* 更改easyui加载grid时的提示文字
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
$.extend($.fn.datagrid.defaults, {
|
||||
loadMsg : '数据加载中....'
|
||||
});
|
||||
|
||||
/**
|
||||
* panel关闭时回收内存,主要用于layout使用iframe嵌入网页时的内存泄漏问题
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*
|
||||
*/
|
||||
$.extend($.fn.panel.defaults, {
|
||||
onBeforeDestroy : function() {
|
||||
var frame = $('iframe', this);
|
||||
try {
|
||||
if (frame.length > 0) {
|
||||
for (var i = 0; i < frame.length; i++) {
|
||||
frame[i].src = '';
|
||||
frame[i].contentWindow.document.write('');
|
||||
frame[i].contentWindow.close();
|
||||
}
|
||||
frame.remove();
|
||||
if (navigator.userAgent.indexOf("MSIE") > 0) {// IE特有回收内存方法
|
||||
try {
|
||||
CollectGarbage();
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 防止panel/window/dialog组件超出浏览器边界
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
ext.onMove = {
|
||||
onMove : function(left, top) {
|
||||
var l = left;
|
||||
var t = top;
|
||||
if (l < 1) {
|
||||
l = 1;
|
||||
}
|
||||
if (t < 1) {
|
||||
t = 1;
|
||||
}
|
||||
var width = parseInt($(this).parent().css('width')) + 14;
|
||||
var height = parseInt($(this).parent().css('height')) + 14;
|
||||
var right = l + width;
|
||||
var buttom = t + height;
|
||||
var browserWidth = $(window).width();
|
||||
var browserHeight = $(window).height();
|
||||
if (right > browserWidth) {
|
||||
l = browserWidth - width;
|
||||
}
|
||||
if (buttom > browserHeight) {
|
||||
t = browserHeight - height;
|
||||
}
|
||||
$(this).parent().css({/* 修正面板位置 */
|
||||
left : l,
|
||||
top : t
|
||||
});
|
||||
}
|
||||
};
|
||||
$.extend($.fn.dialog.defaults, ext.onMove);
|
||||
$.extend($.fn.window.defaults, ext.onMove);
|
||||
$.extend($.fn.panel.defaults, ext.onMove);
|
||||
|
||||
/**
|
||||
*
|
||||
* 通用错误提示
|
||||
*
|
||||
* 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
ext.onLoadError = {
|
||||
onLoadError : function(XMLHttpRequest) {
|
||||
if (parent.$ && parent.$.messager) {
|
||||
parent.$.messager.progress('close');
|
||||
// parent.$.messager.alert('错误', XMLHttpRequest.responseText);
|
||||
} else {
|
||||
$.messager.progress('close');
|
||||
// $.messager.alert('错误', XMLHttpRequest.responseText);
|
||||
}
|
||||
}
|
||||
};
|
||||
$.extend($.fn.datagrid.defaults, ext.onLoadError);
|
||||
$.extend($.fn.treegrid.defaults, ext.onLoadError);
|
||||
$.extend($.fn.tree.defaults, ext.onLoadError);
|
||||
$.extend($.fn.combogrid.defaults, ext.onLoadError);
|
||||
$.extend($.fn.combobox.defaults, ext.onLoadError);
|
||||
$.extend($.fn.form.defaults, ext.onLoadError);
|
||||
|
||||
/**
|
||||
* 扩展combobox在自动补全模式时,检查用户输入的字符是否存在于下拉框中,如果不存在则清空用户输入
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
$.extend($.fn.combobox.defaults, {
|
||||
onShowPanel : function() {
|
||||
var _options = $(this).combobox('options');
|
||||
if (_options.mode == 'remote') {/* 如果是自动补全模式 */
|
||||
var _value = $(this).combobox('textbox').val();
|
||||
var _combobox = $(this);
|
||||
if (_value.length > 0) {
|
||||
$.post(_options.url, {
|
||||
q : _value
|
||||
}, function(result) {
|
||||
if (result && result.length > 0) {
|
||||
_combobox.combobox('loadData', result);
|
||||
}
|
||||
}, 'json');
|
||||
}
|
||||
}
|
||||
},
|
||||
onHidePanel : function() {
|
||||
var _options = $(this).combobox('options');
|
||||
if (_options.mode == 'remote') {/* 如果是自动补全模式 */
|
||||
var _data = $(this).combobox('getData');/* 下拉框所有选项 */
|
||||
var _value = $(this).combobox('getValue');/* 用户输入的值 */
|
||||
var _b = false;/* 标识是否在下拉列表中找到了用户输入的字符 */
|
||||
for (var i = 0; i < _data.length; i++) {
|
||||
if (_data[i][_options.valueField] == _value) {
|
||||
_b = true;
|
||||
}
|
||||
}
|
||||
if (!_b) {/* 如果在下拉列表中没找到用户输入的字符 */
|
||||
$(this).combobox('setValue', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 扩展combogrid在自动补全模式时,检查用户输入的字符是否存在于下拉框中,如果不存在则清空用户输入
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
$.extend($.fn.combogrid.defaults, {
|
||||
onShowPanel : function() {
|
||||
var _options = $(this).combogrid('options');
|
||||
if (_options.mode == 'remote') {/* 如果是自动补全模式 */
|
||||
var _value = $(this).combogrid('textbox').val();
|
||||
if (_value.length > 0) {
|
||||
$(this).combogrid('grid').datagrid("load", {
|
||||
q : _value
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
onHidePanel : function() {
|
||||
var _options = $(this).combogrid('options');
|
||||
if (_options.mode == 'remote') {/* 如果是自动补全模式 */
|
||||
var _data = $(this).combogrid('grid').datagrid('getData').rows;/* 下拉框所有选项 */
|
||||
var _value = $(this).combogrid('getValue');/* 用户输入的值 */
|
||||
var _b = false;/* 标识是否在下拉列表中找到了用户输入的字符 */
|
||||
for (var i = 0; i < _data.length; i++) {
|
||||
if (_data[i][_options.idField] == _value) {
|
||||
_b = true;
|
||||
}
|
||||
}
|
||||
if (!_b) {/* 如果在下拉列表中没找到用户输入的字符 */
|
||||
$(this).combogrid('setValue', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 扩展validatebox,添加新的验证功能
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
$.extend($.fn.validatebox.defaults.rules, {
|
||||
eqPwd : {/* 验证两次密码是否一致功能 */
|
||||
validator : function(value, param) {
|
||||
return value == $(param[0]).val();
|
||||
},
|
||||
message : '密码不一致!'
|
||||
},
|
||||
isBlank: {
|
||||
validator: function (value, param) {
|
||||
return $.trim(value) != '';
|
||||
},
|
||||
message: '该输入项不能为空!'
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 扩展tree和combotree,使其支持平滑数据格式
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*
|
||||
*/
|
||||
ext.loadFilter = {
|
||||
loadFilter : function(data, parent) {
|
||||
var opt = $(this).data().tree.options;
|
||||
var idField, textField, parentField;
|
||||
if (opt.parentField) {
|
||||
idField = opt.idField || 'id';
|
||||
textField = opt.textField || 'text';
|
||||
parentField = opt.parentField || 'pid';
|
||||
var i, l, treeData = [], tmpMap = [];
|
||||
for (i = 0, l = data.length; i < l; i++) {
|
||||
tmpMap[data[i][idField]] = data[i];
|
||||
}
|
||||
for (i = 0, l = data.length; i < l; i++) {
|
||||
if (tmpMap[data[i][parentField]] && data[i][idField] != data[i][parentField]) {
|
||||
if (!tmpMap[data[i][parentField]]['children'])
|
||||
tmpMap[data[i][parentField]]['children'] = [];
|
||||
data[i]['text'] = data[i][textField];
|
||||
tmpMap[data[i][parentField]]['children'].push(data[i]);
|
||||
} else {
|
||||
data[i]['text'] = data[i][textField];
|
||||
treeData.push(data[i]);
|
||||
}
|
||||
}
|
||||
return treeData;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
};
|
||||
$.extend($.fn.combotree.defaults, ext.loadFilter);
|
||||
$.extend($.fn.tree.defaults, ext.loadFilter);
|
||||
|
||||
/**
|
||||
* 扩展treegrid,使其支持平滑数据格式
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*
|
||||
*/
|
||||
$.extend($.fn.treegrid.defaults, {
|
||||
loadFilter : function(data, parentId) {
|
||||
var opt = $(this).data().treegrid.options;
|
||||
var idField, treeField, parentField;
|
||||
if (opt.parentField) {
|
||||
idField = opt.idField || 'id';
|
||||
treeField = opt.textField || 'text';
|
||||
parentField = opt.parentField || 'pid';
|
||||
var i, l, treeData = [], tmpMap = [];
|
||||
for (i = 0, l = data.length; i < l; i++) {
|
||||
tmpMap[data[i][idField]] = data[i];
|
||||
}
|
||||
for (i = 0, l = data.length; i < l; i++) {
|
||||
if (tmpMap[data[i][parentField]] && data[i][idField] != data[i][parentField]) {
|
||||
if (!tmpMap[data[i][parentField]]['children'])
|
||||
tmpMap[data[i][parentField]]['children'] = [];
|
||||
data[i]['text'] = data[i][treeField];
|
||||
tmpMap[data[i][parentField]]['children'].push(data[i]);
|
||||
} else {
|
||||
data[i]['text'] = data[i][treeField];
|
||||
treeData.push(data[i]);
|
||||
}
|
||||
}
|
||||
return treeData;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 创建一个模式化的dialog
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*
|
||||
*/
|
||||
ext.modalDialog = function(options) {
|
||||
var opts = $.extend({
|
||||
title : ' ',
|
||||
width : 700,
|
||||
height : 550,
|
||||
modal : true,
|
||||
resizable: true,
|
||||
onClose : function() {
|
||||
$(this).dialog('destroy');
|
||||
}
|
||||
}, options);
|
||||
opts.modal = true;// 强制此dialog为模式化,无视传递过来的modal参数
|
||||
if (options.url) {
|
||||
opts.content = '<iframe id="'+options.iframeId +'" src="' + options.url + '" allowTransparency="true" scrolling="auto" width="100%" height="100%" frameBorder="0" name=""></iframe>';
|
||||
}
|
||||
return $('<div/>').dialog(opts);
|
||||
};
|
||||
|
||||
/**
|
||||
* 更换主题
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
* @param themeName
|
||||
*/
|
||||
ext.changeTheme = function(themeName) {
|
||||
var $easyuiTheme = $('#easyuiTheme');
|
||||
var url = $easyuiTheme.attr('href');
|
||||
var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css';
|
||||
$easyuiTheme.attr('href', href);
|
||||
|
||||
var $iframe = $('iframe');
|
||||
if ($iframe.length > 0) {
|
||||
for (var i = 0; i < $iframe.length; i++) {
|
||||
var ifr = $iframe[i];
|
||||
try {
|
||||
$(ifr).contents().find('#easyuiTheme').attr('href', href);
|
||||
} catch (e) {
|
||||
try {
|
||||
ifr.contentWindow.document.getElementById('easyuiTheme').href = href;
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ext.cookie('easyuiTheme', themeName, {
|
||||
expires : 7
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 滚动条
|
||||
*
|
||||
* @requires jQuery,EasyUI
|
||||
*/
|
||||
ext.progressBar = function(options) {
|
||||
if (typeof options == 'string') {
|
||||
if (options == 'close') {
|
||||
$('#syProgressBarDiv').dialog('destroy');
|
||||
}
|
||||
} else {
|
||||
if ($('#syProgressBarDiv').length < 1) {
|
||||
var opts = $.extend({
|
||||
title : ' ',
|
||||
closable : false,
|
||||
width : 300,
|
||||
height : 60,
|
||||
modal : true,
|
||||
content : '<div id="syProgressBar" class="easyui-progressbar" data-options="value:0"></div>'
|
||||
}, options);
|
||||
$('<div id="syProgressBarDiv"/>').dialog(opts);
|
||||
$.parser.parse('#syProgressBarDiv');
|
||||
} else {
|
||||
$('#syProgressBarDiv').dialog('open');
|
||||
}
|
||||
if (options.value) {
|
||||
$('#syProgressBar').progressbar('setValue', options.value);
|
||||
}
|
||||
}
|
||||
};
|
||||
$.extend($.fn.datagrid.defaults.editors, {
|
||||
timespinner: {
|
||||
init: function (container, options) {
|
||||
var input = $('<input />').appendTo(container);
|
||||
input.timespinner(options);
|
||||
return input;
|
||||
},
|
||||
getValue: function (target) {
|
||||
return $(target).timespinner('getValue');
|
||||
},
|
||||
setValue: function (target, value) {
|
||||
$(target).timespinner('setValue', value);
|
||||
},
|
||||
resize: function (target, width) {
|
||||
var input = $(target);
|
||||
if ($.boxModel == true) {
|
||||
input.resize('resize', width - (input.outerWidth() - input.width()));
|
||||
} else {
|
||||
input.resize('resize', width);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user