var sy = sy || {}; /** * 更改easyui加载panel时的提示文字 * * @author Jeffrey * * @requires jQuery,EasyUI */ $.extend($.fn.panel.defaults, { loadingMessage : '加载中....' }); /** * 更改easyui加载grid时的提示文字 * * @author Jeffrey * * @requires jQuery,EasyUI */ $.extend($.fn.datagrid.defaults, { loadMsg : '数据加载中....' }); /** * panel关闭时回收内存,主要用于layout使用iframe嵌入网页时的内存泄漏问题 * * @author Jeffrey * * @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组件超出浏览器边界 * * @author Jeffrey * * @requires jQuery,EasyUI */ sy.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, sy.onMove); $.extend($.fn.window.defaults, sy.onMove); $.extend($.fn.panel.defaults, sy.onMove); /** * * 通用错误提示 * * 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作 * * @author Jeffrey * * @requires jQuery,EasyUI */ sy.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, sy.onLoadError); $.extend($.fn.treegrid.defaults, sy.onLoadError); $.extend($.fn.tree.defaults, sy.onLoadError); $.extend($.fn.combogrid.defaults, sy.onLoadError); $.extend($.fn.combobox.defaults, sy.onLoadError); $.extend($.fn.form.defaults, sy.onLoadError); /** * 扩展combobox在自动补全模式时,检查用户输入的字符是否存在于下拉框中,如果不存在则清空用户输入 * * @author Jeffrey * * @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在自动补全模式时,检查用户输入的字符是否存在于下拉框中,如果不存在则清空用户输入 * * @author Jeffrey * * @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,添加新的验证功能 * * @author Jeffrey * * @requires jQuery,EasyUI */ $.extend($.fn.validatebox.defaults.rules, { eqPwd : {/* 验证两次密码是否一致功能 */ validator : function(value, param) { return value == $(param[0]).val(); }, message : '密码不一致!' } }); /** * 扩展tree和combotree,使其支持平滑数据格式 * * @author Jeffrey * * @requires jQuery,EasyUI * */ sy.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, sy.loadFilter); $.extend($.fn.tree.defaults, sy.loadFilter); /** * 扩展treegrid,使其支持平滑数据格式 * * @author Jeffrey * * @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 * * @author Jeffrey * * @requires jQuery,EasyUI * */ sy.modalDialog = function(options) { var opts = $.extend({ title : ' ', width : 640, height : 480, modal : true, onClose : function() { $(this).dialog('destroy'); } }, options); opts.modal = true;// 强制此dialog为模式化,无视传递过来的modal参数 if (options.url) { opts.content = ''; } return $('
').dialog(opts); }; /** * 更换主题 * * @author Jeffrey * @requires jQuery,EasyUI * @param themeName */ sy.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) { } } } } sy.cookie('easyuiTheme', themeName, { expires : 7 }); }; /** * 滚动条 * * @author Jeffrey * @requires jQuery,EasyUI */ sy.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 : '' }, options); $('').dialog(opts); $.parser.parse('#syProgressBarDiv'); } else { $('#syProgressBarDiv').dialog('open'); } if (options.value) { $('#syProgressBar').progressbar('setValue', options.value); } } };