/** * jQuery ligerUI 1.3.3 * * http://ligerui.com * * Author daomi 2015 [ 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 urlParms: null, //传参 frameName: null, //创建iframe时 作为iframe的name和id data: null, //可用于传递到iframe的数据 showClose: false, //是否显示关闭按钮 showToggle: true, //是否显示收缩按钮 showRefresh: false, //是否显示刷新按钮 icon: null, //左侧按钮 onClose:null, //关闭前事件 onClosed:null, //关闭事件 onLoaded: null, //url模式 加载完事件 onToggle: null //收缩/展开事件 }; $.ligerDefaults.PanelString = { refreshMessage: '刷新', closeMessage: '关闭', expandMessage: '展开', collapseMessage: '收起' }; $.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.find(".l-panel-header").hover(function () { $(this).addClass("l-panel-header-hover"); }, function () { $(this).removeClass("l-panel-header-hover"); }); g.panel.bind("click.panel", function (e) { var obj = (e.target || e.srcElement), jobj = $(obj); if (jobj.hasClass("l-panel-header-toggle")) { var isShowed = !g.panel.find(".l-panel-header .l-panel-header-toggle:first").hasClass("l-panel-header-toggle-hide"); g.toggle(); g.trigger('toggle', [isShowed]); } else if (jobj.hasClass("l-panel-header-close")) { g.close(); } else if (jobj.hasClass("l-panel-header-refresh")) { g.refresh(); } }); }, _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"); toggle.attr("title", p.collapseMessage); } else { toggle.addClass("l-panel-header-toggle-hide"); toggle.attr("title", p.expandMessage); } g.panel.find(".l-panel-content:first").toggle(); }, refresh : function() { var g = this, p = this.options; g.set('url', p.url); }, _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")); toggle.attr("title", p.collapseMessage); } 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) { var urlParms = $.isFunction(p.urlParms) ? p.urlParms.call(g) : p.urlParms; if (urlParms) { for (name in urlParms) { url += url.indexOf('?') == -1 ? "?" : "&"; url += name + "=" + urlParms[name]; } } if(!g.jiframe) { 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); g.jiframe[0].panel = g;//增加窗口对panel对象的引用 g.frame = window.frames[g.jiframe.attr("name")]; } setTimeout(function () { if (content.find(".l-panel-loading:first").length == 0) content.append("
"); var iframeloading = $(".l-panel-loading:first", content); /* 可以在子窗口这样使用: var panel = frameElement.panel; var panelData = dialog.get('data');//获取data参数 panel.set('title','新标题'); //设置标题 panel.close();//关闭panel */ g.jiframe.attr("src", url).bind('load.panel', function () { iframeloading.hide(); g.trigger('loaded'); }); }, 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")); btn.attr("title", p.closeMessage); } else { header.find(".l-panel-header-close").remove(); } }, _setShowRefresh: 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")); btn.attr("title", p.refreshMessage); } else { header.find(".l-panel-header-refresh").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) { if (typeof (value) == "string") { if (value.indexOf('%') > -1) { this.panel.width(value); } else { this.panel.width(parseInt(value)); } } else { 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);