/** * jQuery EasyUI 1.3.6 * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. * * Licensed under the GPL or commercial licenses * To use it on other terms please contact author: info@jeasyui.com * http://www.gnu.org/licenses/gpl.txt * http://www.jeasyui.com/license_commercial.php * * jQuery EasyUI layout Extensions 1.0 beta * jQuery EasyUI layout 组件扩展 * jeasyui.extensions.layout.js * 二次开发 流云 * 最近更新:2014-06-17 * * 依赖项: * 1、jquery.jdirk.js v1.0 beta late * 2、jeasyui.extensions.js v1.0 beta late * * Copyright (c) 2013-2014 ChenJianwei personal All rights reserved. * http://www.chenjianwei.org */ (function ($, undefined) { $.fn.layout.extensions = { resizeDelay: 500 }; function getPanels(target, withCenter) { var l = $(target), flag = (withCenter == null || withCenter == undefined) ? true : withCenter, regions = flag ? ["north", "west", "east", "center", "south"] : ["north", "west", "east", "south"]; return $.array.reduce(regions, function (prev, val, index) { var p = l.layout("panel", val); if (p && p.length) { prev.push({ region: val, panel: p }); prev[val] = p; } return prev; }, []); }; function collapseRegion(l, region) { var p = l.layout("panel", region); if (p && p.length) { var opts = p.panel("options"); if (!opts.collapsed) { l.layout("collapse", region); } } }; function collapseAll(target) { var l = $(target), panels = l.layout("panels", false); $.each(panels, function (index, item) { var opts = item.panel.panel("options"); if (!opts.collapsed) { l.layout("collapse", item.region); } }); $.util.exec(function () { l.layout("resize"); }, $.fn.layout.extensions.resizeDelay); }; function expandRegion(l, region) { var p = l.layout("panel", region); if (p && p.length) { var opts = p.panel("options"); if (opts.collapsed) { l.layout("expand", region); } } }; function expandAll(target) { var l = $(target), panels = l.layout("panels", false); $.each(panels, function (index, item) { var opts = item.panel.panel("options"); if (opts.collapsed) { l.layout("expand", item.region); } }); $.util.exec(function () { l.layout("resize"); }, $.fn.layout.extensions.resizeDelay); }; function toggle(target, region) { if (!$.array.contains(["north", "west", "east", "center", "south"], region)) { return; } var l = $(target), p = l.layout("panel", region); if (p && p.length) { var opts = p.panel("options"); if (opts.collapsed) { l.layout("expand", region); } else { l.layout("collapse", region); } } }; function toggleAll(target, type) { if (!$.array.contains(["collapse", "expand", "toggle"], type)) { type = "toggle"; } var l = $(target), regions = ["north", "west", "east", "south"], hasCollapsed = $.array.some(regions, function (region) { var p = l.layout("panel", region); if (p && p.length) { var opts = p.panel("options"); return opts.collapsed ? true : false; } else { return false; } }), hasExpanded = $.array.some(regions, function (region) { var p = l.layout("panel", region); if (p && p.length) { var opts = p.panel("options"); return !opts.collapsed ? true : false; } else { return false; } }); switch (type) { case "collapse": l.layout(hasExpanded ? "collapseAll" : "expandAll"); break; case "expand": l.layout(hasCollapsed ? "expandAll" : "collapseAll"); break; case "toggle": toggleRegions(); break; default: toggleRegions(); break; } function toggleRegions() { $.each(regions, function (i, region) { l.layout("toggle", region); }); $.util.exec(function () { l.layout("resize"); }, $.fn.layout.extensions.resizeDelay); }; }; var defaults = $.fn.layout.extensions.defaults = {}; var methods = $.fn.layout.extensions.methods = { // 扩展 easyui-layout 组件的自定义方法;获取 easyui-layout 组件的所有 panel 面板; // 该方法的参数 withCenter 是一个 boolean 类型值,默认为 true;表示返回的数组中是否包含 center panel。 // 返回值:该方法返回一个 Array 数组对象;数组中的每个元素都是一个包含如下属性定义的 JSON-Object: // region : String 类型值,表示该面板所在的位置,可能的值为 "north"、"west"、"east"、"center"、"south"; // panel : jQuery 对象,表示 easyui-panel 面板对象; panels: function (jq, withCenter) { return getPanels(jq[0], withCenter); }, // 扩展 easyui-layout 组件的自定义方法;用于折叠 easyui-layout 组件除 center 位置外的所有 panel 面板; // 返回值:返回表示当前 easyui-combo layout jQuery 链式对象。 collapseAll: function (jq) { return jq.each(function () { collapseAll(this); }); }, // 扩展 easyui-layout 组件的自定义方法;用于展开 easyui-layout 组件除 center 位置外的所有 panel 面板; // 返回值:返回表示当前 easyui-combo layout jQuery 链式对象。 expandAll: function (jq) { return jq.each(function () { expandAll(this); }); }, // 扩展 easyui-layout 组件的自定义方法;用于切换 panel 面板的 折叠/展开 状态;该方法定义如下参数: // region: String 类型值,表示要切换 折叠/展开 状态的面板的位置; // 返回值:返回表示当前 easyui-combo layout jQuery 链式对象。 toggle: function (jq, region) { return jq.each(function () { toggle(this, region); }); }, // 扩展 easyui-layout 组件的自定义方法;用于切换所有 panel 面板的 折叠/展开 状态;该方法定义如下参数: // type: String 类型值,表示在进行 折叠/展开 操作时的操作方式;该参数传入的值限定在以下范围内: // "collapse": 当既有展开的面板也有折叠的面板时,对所有面板执行折叠操作; // "expand" : 当既有展开的面板也有折叠的面板时,对所有面板执行展开操作; // "toggle" : 当既有展开的面板也有折叠的面板时,对所有面板执行切换 折叠/展开 状态操作;默认值。 // 返回值:返回表示当前 easyui-combo layout jQuery 链式对象。 toggleAll: function (jq, type) { return jq.each(function () { toggleAll(this, type); }); } }; $.extend($.fn.layout.defaults, defaults); $.extend($.fn.layout.methods, methods); })(jQuery);