/** * jQuery ligerUI 1.2.4 * * http://ligerui.com * * Author daomi 2014 [ gd_star@163.com ] * */ (function ($) { $.fn.ligerPanel = function (options) { return $.ligerui.run.call(this, "ligerPanel", arguments); }; $.ligerDefaults.Panel = { width: 400, height : 300, title: 'Panel', content: null, //内容 url: null, //远程内容Url frameName: null, //创建iframe时 作为iframe的name和id data: null, //可用于传递到iframe的数据 showClose: false, //是否显示关闭按钮 showToggle: true, //是否显示收缩按钮 icon: null, //左侧按钮 onClose:null, //关闭前事件 onClosed:null, //关闭事件 onLoaded:null //url模式 加载完事件 }; $.ligerMethos.Panel = {}; $.ligerui.controls.Panel = function (element, options) { $.ligerui.controls.Panel.base.constructor.call(this, element, options); }; $.ligerui.controls.Panel.ligerExtend($.ligerui.core.UIComponent, { __getType: function () { return 'Panel'; }, __idPrev: function () { return 'Panel'; }, _extendMethods: function () { return $.ligerMethos.Panel; }, _init: function () { var g = this, p = this.options; $.ligerui.controls.Panel.base._init.call(this); p.content = p.content || $(g.element).html(); }, _render: function () { var g = this, p = this.options; g.panel = $(g.element).addClass("l-panel").html(""); g.panel.append('
'); g.set(p); g.panel.bind("click.panel", function (e) { var obj = (e.target || e.srcElement), jobj = $(obj); if (jobj.hasClass("l-panel-header-toggle")) { g.toggle(); } else if (jobj.hasClass("l-panel-header-close")) { g.close(); } }); }, _setChildren: function(children) { var g = this, p = this.options; var tagNames = { input : ["textbox", "combobox", "select"] }; var PluginNameMatchs = { "grid" : "ligerGrid", "toolbar":"ligerToolBar", "tree":"ligerTree", "form":"ligerForm", "menu":"ligerMenu", "menubar":"ligerMenuBar", "portal":"ligerPortal", "combobox":"ligerComboBox", "textbox":"ligerTextBox", "spinner":"ligerSpinner", "listbox":"ligerListBox", "checkbox":"ligerCheckBox", "radio":"ligerRadio", "checkboxlist":"ligerCheckBoxList", "radiolist":"ligerRadioList", "popupedit":"ligerPopupEdit", "button":"ligerButton", "dateeditor":"ligerDateEditor", "dialog":"ligerDialog", "panel":"ligerPanel", "layout":"ligerLayout", "accordion":"ligerAccordion", "tab":"ligerTab" }; if (!children || !children.length) return; for (var i = 0; i < children.length; i++) { var child = children[i], type = child.type; var tagName = tagNames[type] || "div"; var plugin = PluginNameMatchs[type]; if (!plugin) continue; var element = document.createElement(tagName); g.panel.find(".l-panel-content").append(element); var childOp = $.extend({},child); childOp.type = null; $(element)[plugin](childOp); } }, collapse: function () { var g = this, p = this.options; var toggle = g.panel.find(".l-panel-header .l-panel-header-toggle:first"); if (toggle.hasClass("l-panel-header-toggle-hide")) return; g.toggle(); }, expand: function () { var g = this, p = this.options; var toggle = g.panel.find(".l-panel-header .l-panel-header-toggle:first"); if (!toggle.hasClass("l-panel-header-toggle-hide")) return; g.toggle(); }, toggle : function() { var g = this, p = this.options; var toggle = g.panel.find(".l-panel-header .l-panel-header-toggle:first"); if (toggle.hasClass("l-panel-header-toggle-hide")) { toggle.removeClass("l-panel-header-toggle-hide"); } else { toggle.addClass("l-panel-header-toggle-hide"); } g.panel.find(".l-panel-content:first").toggle("normal"); }, _setShowToggle:function(v) { var g = this, p = this.options; var header = g.panel.find(".l-panel-header:first"); if (v) { var toggle = $("
"); toggle.appendTo(header.find(".icons")); } else { header.find(".l-panel-header-toggle").remove(); } }, _setContent: function (v) { var g = this, p = this.options; var content = g.panel.find(".l-panel-content:first"); if (v) { content.html(v); } }, _setUrl: function (url) { var g = this, p = this.options; var content = g.panel.find(".l-panel-content:first"); if (url) { g.jiframe = $(""); var framename = p.frameName ? p.frameName : "ligerpanel" + new Date().getTime(); g.jiframe.attr("name", framename); g.jiframe.attr("id", framename); content.prepend(g.jiframe); setTimeout(function () { if (content.find(".l-panel-loading:first").length == 0) content.append("
"); var iframeloading = $(".l-panel-loading:first", content); g.jiframe[0].panel = g;//增加窗口对panel对象的引用 /* 可以在子窗口这样使用: var panel = frameElement.panel; var panelData = dialog.get('data');//获取data参数 panel.set('title','新标题'); //设置标题 panel.close();//关闭dialog */ g.jiframe.attr("src", p.url).bind('load.panel', function () { iframeloading.hide(); g.trigger('loaded'); }); g.frame = window.frames[g.jiframe.attr("name")]; }, 0); } }, _setShowClose: function (v) { var g = this, p = this.options; var header = g.panel.find(".l-panel-header:first"); if (v) { var btn = $("
"); btn.appendTo(header.find(".icons")); } else { header.find(".l-panel-header-close").remove(); } }, close:function() { var g = this, p = this.options; if (g.trigger('close') == false) return; g.panel.remove(); g.trigger('closed'); }, show: function () { this.panel.show(); }, _setIcon : function(url) { var g = this; if (!url) { g.panel.removeClass("l-panel-hasicon"); g.panel.find('img').remove(); } else { g.panel.addClass("l-panel-hasicon"); g.panel.append(''); } }, _setWidth: function (value) { value && this.panel.width(value); }, _setHeight: function (value) { var g = this, p = this.options; var header = g.panel.find(".l-panel-header:first"); this.panel.find(".l-panel-content:first").height(value - header.height()); }, _setTitle: function (value) { this.panel.find(".l-panel-header span:first").text(value); } }); })(jQuery);