123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- 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 = '<iframe id="" src="' + options.url + '" allowTransparency="true" scrolling="auto" width="100%" height="98%" frameBorder="0" name=""></iframe>';
- }
- return $('<div/>').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 : '<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);
- }
- }
- };
|