mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
2 lines
3.4 KiB
JavaScript
2 lines
3.4 KiB
JavaScript
define([],function(){var a=Backbone.View.extend({initialize:function(a,b){this.$button=a,this.$button.size()||(this.$button=$("<div/>")),this.options=b||[];var c=this;this.$button.click(function(a){return $(".popmenu-wrapper").remove(),c._renderAndShow(a),!1})},_renderAndShow:function(a){this.render(),this.$el.appendTo("body").css(this._getShownPosition(a)).show(),this._setUpCloseBehavior()},render:function(){if(this.$el.addClass("popmenu-wrapper").hide().css({position:"absolute"}).html(this.template(this.$button.attr("id"),this.options)),this.options.length){var a=this;this.$el.find("li").each(function(b){var c=a.options[b];c.func&&$(this).children("a.popupmenu-option").click(function(b){c.func.call(a,b,c),b.preventDefault()})})}return this},template:function(a,b){return['<ul id="',a,'-menu" class="dropdown-menu">',this._templateOptions(b),"</ul>"].join("")},_templateOptions:function(a){return a.length?_.map(a,function(a){if(a.divider)return'<li class="divider"></li>';if(a.header)return['<li class="head"><a href="javascript:void(0);">',a.html,"</a></li>"].join("");var b=a.href||"javascript:void(0);",c=a.target?' target="'+a.target+'"':"",d=a.checked?'<span class="fa fa-check"></span>':"";return['<li><a class="popupmenu-option" href="',b,'"',c,">",d,a.html,"</a></li>"].join("")}).join(""):"<li>(no options)</li>"},_getShownPosition:function(a){var b=this.$el.width(),c=a.pageX-b/2;return c=Math.min(c,$(document).scrollLeft()+$(window).width()-b-5),c=Math.max(c,$(document).scrollLeft()+5),{top:a.pageY,left:c}},_setUpCloseBehavior:function(){function a(){if($(document).off("click.close_popup"),window.parent!==window)try{$(window.parent.document).off("click.close_popup")}catch(a){}else try{$("iframe#galaxy_main").contents().off("click.close_popup")}catch(a){}b.remove()}var b=this;if($("html").one("click.close_popup",a),window.parent!==window)try{$(window.parent.document).find("html").one("click.close_popup",a)}catch(c){}else try{$("iframe#galaxy_main").contents().one("click.close_popup",a)}catch(c){}},addItem:function(a,b){return b=b>=0?b:this.options.length,this.options.splice(b,0,a),this},removeItem:function(a){return a>=0&&this.options.splice(a,1),this},findIndexByHtml:function(a){for(var b=0;b<this.options.length;b++)if(_.has(this.options[b],"html")&&this.options[b].html===a)return b;return null},findItemByHtml:function(a){return this.options[this.findIndexByHtml(a)]},toString:function(){return"PopupMenu"}});return a.create=function(b,c){return new a(b,c)},a.make_popupmenu=function(b,c){var d=[];return _.each(c,function(a,b){var c={html:b};null===a?c.header=!0:"function"===jQuery.type(a)&&(c.func=a),d.push(c)}),new a($(b),d)},a.convertLinksToOptions=function(a,b){a=$(a),b=b||"a";var c=[];return a.find(b).each(function(a){var b={},d=$(a);if(b.html=d.text(),d.attr("href")){var e=d.attr("href"),f=d.attr("target"),g=d.attr("confirm");b.func=function(){if(!g||confirm(g))switch(f){case"_parent":window.parent.location=e;break;case"_top":window.top.location=e;break;default:window.location=e}}}c.push(b)}),c},a.fromExistingDom=function(b,c,d){b=$(b),c=$(c);var e=a.convertLinksToOptions(c,d);return c.remove(),new a(b,e)},a.make_popup_menus=function(b,c,d){b=b||document,c=c||"div[popupmenu]",d=d||function(a){return"#"+a.attr("popupmenu")};var e=[];return $(b).find(c).each(function(){var c=$(this),f=$(b).find(d(c,b));e.push(a.fromDom(f,c)),f.addClass("popup")}),e},a});
|
|
//# sourceMappingURL=../../../maps/mvc/ui/popup-menu.js.map
|