123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- /**
- * jQuery EasyUI 1.3.4
- *
- * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the GPL or commercial licenses
- * To use it on other terms please contact us: info@jeasyui.com
- * http://www.gnu.org/licenses/gpl.txt
- * http://www.jeasyui.com/license_commercial.php
- *
- */
- (function($){
- function _1(_2){
- var _3=$.data(_2,"tabs").options;
- if(_3.tabPosition=="left"||_3.tabPosition=="right"){
- return;
- }
- var _4=$(_2).children("div.tabs-header");
- var _5=_4.children("div.tabs-tool");
- var _6=_4.children("div.tabs-scroller-left");
- var _7=_4.children("div.tabs-scroller-right");
- var _8=_4.children("div.tabs-wrap");
- var _9=_4.outerHeight();
- if(_3.plain){
- _9-=_9-_4.height();
- }
- _5._outerHeight(_9);
- var _a=0;
- $("ul.tabs li",_4).each(function(){
- _a+=$(this).outerWidth(true);
- });
- var _b=_4.width()-_5._outerWidth();
- if(_a>_b){
- _6.add(_7).show()._outerHeight(_9);
- if(_3.toolPosition=="left"){
- _5.css({left:_6.outerWidth(),right:""});
- _8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()});
- }else{
- _5.css({left:"",right:_7.outerWidth()});
- _8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()});
- }
- }else{
- _6.add(_7).hide();
- if(_3.toolPosition=="left"){
- _5.css({left:0,right:""});
- _8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b});
- }else{
- _5.css({left:"",right:0});
- _8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b});
- }
- }
- };
- function _c(_d){
- var _e=$.data(_d,"tabs").options;
- var _f=$(_d).children("div.tabs-header");
- if(_e.tools){
- if(typeof _e.tools=="string"){
- $(_e.tools).addClass("tabs-tool").appendTo(_f);
- $(_e.tools).show();
- }else{
- _f.children("div.tabs-tool").remove();
- var _10=$("<div class=\"tabs-tool\"><table cellspacing=\"0\" cellpadding=\"0\" style=\"height:100%\"><tr></tr></table></div>").appendTo(_f);
- var tr=_10.find("tr");
- for(var i=0;i<_e.tools.length;i++){
- var td=$("<td></td>").appendTo(tr);
- var _11=$("<a href=\"javascript:void(0);\"></a>").appendTo(td);
- _11[0].onclick=eval(_e.tools[i].handler||function(){
- });
- _11.linkbutton($.extend({},_e.tools[i],{plain:true}));
- }
- }
- }else{
- _f.children("div.tabs-tool").remove();
- }
- };
- function _12(_13){
- var _14=$.data(_13,"tabs");
- var _15=_14.options;
- var cc=$(_13);
- _15.fit?$.extend(_15,cc._fit()):cc._fit(false);
- cc.width(_15.width).height(_15.height);
- var _16=$(_13).children("div.tabs-header");
- var _17=$(_13).children("div.tabs-panels");
- var _18=_16.find("div.tabs-wrap");
- var ul=_18.find(".tabs");
- for(var i=0;i<_14.tabs.length;i++){
- var _19=_14.tabs[i].panel("options");
- var p_t=_19.tab.find("a.tabs-inner");
- var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined;
- if(_1a){
- p_t._outerWidth(_1a);
- }else{
- p_t.css("width","");
- }
- p_t._outerHeight(_15.tabHeight);
- p_t.css("lineHeight",p_t.height()+"px");
- }
- if(_15.tabPosition=="left"||_15.tabPosition=="right"){
- _16._outerWidth(_15.headerWidth);
- _17._outerWidth(cc.width()-_15.headerWidth);
- _16.add(_17)._outerHeight(_15.height);
- _18._outerWidth(_16.width());
- ul._outerWidth(_18.width()).css("height","");
- }else{
- _16._outerWidth(_15.width).css("height","");
- ul._outerHeight(_15.tabHeight).css("width","");
- _1(_13);
- var _1b=_15.height;
- if(!isNaN(_1b)){
- _17._outerHeight(_1b-_16.outerHeight());
- }else{
- _17.height("auto");
- }
- var _1a=_15.width;
- if(!isNaN(_1a)){
- _17._outerWidth(_1a);
- }else{
- _17.width("auto");
- }
- }
- };
- function _1c(_1d){
- var _1e=$.data(_1d,"tabs").options;
- var tab=_1f(_1d);
- if(tab){
- var _20=$(_1d).children("div.tabs-panels");
- var _21=_1e.width=="auto"?"auto":_20.width();
- var _22=_1e.height=="auto"?"auto":_20.height();
- tab.panel("resize",{width:_21,height:_22});
- }
- };
- function _23(_24){
- var _25=$.data(_24,"tabs").tabs;
- var cc=$(_24);
- cc.addClass("tabs-container");
- var pp=$("<div class=\"tabs-panels\"></div>").insertBefore(cc);
- cc.children("div").each(function(){
- pp[0].appendChild(this);
- });
- cc[0].appendChild(pp[0]);
- $("<div class=\"tabs-header\">"+"<div class=\"tabs-scroller-left\"></div>"+"<div class=\"tabs-scroller-right\"></div>"+"<div class=\"tabs-wrap\">"+"<ul class=\"tabs\"></ul>"+"</div>"+"</div>").prependTo(_24);
- cc.children("div.tabs-panels").children("div").each(function(i){
- var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)});
- var pp=$(this);
- _25.push(pp);
- _33(_24,pp,_26);
- });
- cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){
- $(this).addClass("tabs-scroller-over");
- },function(){
- $(this).removeClass("tabs-scroller-over");
- });
- cc.bind("_resize",function(e,_27){
- var _28=$.data(_24,"tabs").options;
- if(_28.fit==true||_27){
- _12(_24);
- _1c(_24);
- }
- return false;
- });
- };
- function _29(_2a){
- var _2b=$.data(_2a,"tabs").options;
- $(_2a).children("div.tabs-header").unbind().bind("click",function(e){
- if($(e.target).hasClass("tabs-scroller-left")){
- $(_2a).tabs("scrollBy",-_2b.scrollIncrement);
- }else{
- if($(e.target).hasClass("tabs-scroller-right")){
- $(_2a).tabs("scrollBy",_2b.scrollIncrement);
- }else{
- var li=$(e.target).closest("li");
- if(li.hasClass("tabs-disabled")){
- return;
- }
- var a=$(e.target).closest("a.tabs-close");
- if(a.length){
- _49(_2a,_2c(li));
- }else{
- if(li.length){
- _3e(_2a,_2c(li));
- }
- }
- }
- }
- }).bind("contextmenu",function(e){
- var li=$(e.target).closest("li");
- if(li.hasClass("tabs-disabled")){
- return;
- }
- if(li.length){
- _2b.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2c(li));
- }
- });
- function _2c(li){
- var _2d=0;
- li.parent().children("li").each(function(i){
- if(li[0]==this){
- _2d=i;
- return false;
- }
- });
- return _2d;
- };
- };
- function _2e(_2f){
- var _30=$.data(_2f,"tabs").options;
- var _31=$(_2f).children("div.tabs-header");
- var _32=$(_2f).children("div.tabs-panels");
- _31.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right");
- _32.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right");
- if(_30.tabPosition=="top"){
- _31.insertBefore(_32);
- }else{
- if(_30.tabPosition=="bottom"){
- _31.insertAfter(_32);
- _31.addClass("tabs-header-bottom");
- _32.addClass("tabs-panels-top");
- }else{
- if(_30.tabPosition=="left"){
- _31.addClass("tabs-header-left");
- _32.addClass("tabs-panels-right");
- }else{
- if(_30.tabPosition=="right"){
- _31.addClass("tabs-header-right");
- _32.addClass("tabs-panels-left");
- }
- }
- }
- }
- if(_30.plain==true){
- _31.addClass("tabs-header-plain");
- }else{
- _31.removeClass("tabs-header-plain");
- }
- if(_30.border==true){
- _31.removeClass("tabs-header-noborder");
- _32.removeClass("tabs-panels-noborder");
- }else{
- _31.addClass("tabs-header-noborder");
- _32.addClass("tabs-panels-noborder");
- }
- };
- function _33(_34,pp,_35){
- var _36=$.data(_34,"tabs");
- _35=_35||{};
- pp.panel($.extend({},_35,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_35.icon?_35.icon:undefined),onLoad:function(){
- if(_35.onLoad){
- _35.onLoad.call(this,arguments);
- }
- _36.options.onLoad.call(_34,$(this));
- }}));
- var _37=pp.panel("options");
- var _38=$(_34).children("div.tabs-header").find("ul.tabs");
- _37.tab=$("<li></li>").appendTo(_38);
- _37.tab.append("<a href=\"javascript:void(0)\" class=\"tabs-inner\">"+"<span class=\"tabs-title\"></span>"+"<span class=\"tabs-icon\"></span>"+"</a>");
- $(_34).tabs("update",{tab:pp,options:_37});
- };
- function _39(_3a,_3b){
- var _3c=$.data(_3a,"tabs").options;
- var _3d=$.data(_3a,"tabs").tabs;
- if(_3b.selected==undefined){
- _3b.selected=true;
- }
- var pp=$("<div></div>").appendTo($(_3a).children("div.tabs-panels"));
- _3d.push(pp);
- _33(_3a,pp,_3b);
- _3c.onAdd.call(_3a,_3b.title,_3d.length-1);
- _12(_3a);
- if(_3b.selected){
- _3e(_3a,_3d.length-1);
- }
- };
- function _3f(_40,_41){
- var _42=$.data(_40,"tabs").selectHis;
- var pp=_41.tab;
- var _43=pp.panel("options").title;
- pp.panel($.extend({},_41.options,{iconCls:(_41.options.icon?_41.options.icon:undefined)}));
- var _44=pp.panel("options");
- var tab=_44.tab;
- var _45=tab.find("span.tabs-title");
- var _46=tab.find("span.tabs-icon");
- _45.html(_44.title);
- _46.attr("class","tabs-icon");
- tab.find("a.tabs-close").remove();
- if(_44.closable){
- _45.addClass("tabs-closable");
- $("<a href=\"javascript:void(0)\" class=\"tabs-close\"></a>").appendTo(tab);
- }else{
- _45.removeClass("tabs-closable");
- }
- if(_44.iconCls){
- _45.addClass("tabs-with-icon");
- _46.addClass(_44.iconCls);
- }else{
- _45.removeClass("tabs-with-icon");
- }
- if(_43!=_44.title){
- for(var i=0;i<_42.length;i++){
- if(_42[i]==_43){
- _42[i]=_44.title;
- }
- }
- }
- tab.find("span.tabs-p-tool").remove();
- if(_44.tools){
- var _47=$("<span class=\"tabs-p-tool\"></span>").insertAfter(tab.find("a.tabs-inner"));
- if($.isArray(_44.tools)){
- for(var i=0;i<_44.tools.length;i++){
- var t=$("<a href=\"javascript:void(0)\"></a>").appendTo(_47);
- t.addClass(_44.tools[i].iconCls);
- if(_44.tools[i].handler){
- t.bind("click",{handler:_44.tools[i].handler},function(e){
- if($(this).parents("li").hasClass("tabs-disabled")){
- return;
- }
- e.data.handler.call(this);
- });
- }
- }
- }else{
- $(_44.tools).children().appendTo(_47);
- }
- var pr=_47.children().length*12;
- if(_44.closable){
- pr+=8;
- }else{
- pr-=3;
- _47.css("right","5px");
- }
- _45.css("padding-right",pr+"px");
- }
- _12(_40);
- $.data(_40,"tabs").options.onUpdate.call(_40,_44.title,_48(_40,pp));
- };
- function _49(_4a,_4b){
- var _4c=$.data(_4a,"tabs").options;
- var _4d=$.data(_4a,"tabs").tabs;
- var _4e=$.data(_4a,"tabs").selectHis;
- if(!_4f(_4a,_4b)){
- return;
- }
- var tab=_50(_4a,_4b);
- var _51=tab.panel("options").title;
- var _52=_48(_4a,tab);
- if(_4c.onBeforeClose.call(_4a,_51,_52)==false){
- return;
- }
- var tab=_50(_4a,_4b,true);
- tab.panel("options").tab.remove();
- tab.panel("destroy");
- _4c.onClose.call(_4a,_51,_52);
- _12(_4a);
- for(var i=0;i<_4e.length;i++){
- if(_4e[i]==_51){
- _4e.splice(i,1);
- i--;
- }
- }
- var _53=_4e.pop();
- if(_53){
- _3e(_4a,_53);
- }else{
- if(_4d.length){
- _3e(_4a,0);
- }
- }
- };
- function _50(_54,_55,_56){
- var _57=$.data(_54,"tabs").tabs;
- if(typeof _55=="number"){
- if(_55<0||_55>=_57.length){
- return null;
- }else{
- var tab=_57[_55];
- if(_56){
- _57.splice(_55,1);
- }
- return tab;
- }
- }
- for(var i=0;i<_57.length;i++){
- var tab=_57[i];
- if(tab.panel("options").title==_55){
- if(_56){
- _57.splice(i,1);
- }
- return tab;
- }
- }
- return null;
- };
- function _48(_58,tab){
- var _59=$.data(_58,"tabs").tabs;
- for(var i=0;i<_59.length;i++){
- if(_59[i][0]==$(tab)[0]){
- return i;
- }
- }
- return -1;
- };
- function _1f(_5a){
- var _5b=$.data(_5a,"tabs").tabs;
- for(var i=0;i<_5b.length;i++){
- var tab=_5b[i];
- if(tab.panel("options").closed==false){
- return tab;
- }
- }
- return null;
- };
- function _5c(_5d){
- var _5e=$.data(_5d,"tabs").tabs;
- for(var i=0;i<_5e.length;i++){
- if(_5e[i].panel("options").selected){
- _3e(_5d,i);
- return;
- }
- }
- if(_5e.length){
- _3e(_5d,0);
- }
- };
- function _3e(_5f,_60){
- var _61=$.data(_5f,"tabs").options;
- var _62=$.data(_5f,"tabs").tabs;
- var _63=$.data(_5f,"tabs").selectHis;
- if(_62.length==0){
- return;
- }
- var _64=_50(_5f,_60);
- if(!_64){
- return;
- }
- var _65=_1f(_5f);
- if(_65){
- _65.panel("close");
- _65.panel("options").tab.removeClass("tabs-selected");
- }
- _64.panel("open");
- var _66=_64.panel("options").title;
- _63.push(_66);
- var tab=_64.panel("options").tab;
- tab.addClass("tabs-selected");
- var _67=$(_5f).find(">div.tabs-header>div.tabs-wrap");
- var _68=tab.position().left;
- var _69=_68+tab.outerWidth();
- if(_68<0||_69>_67.width()){
- var _6a=_68-(_67.width()-tab.width())/2;
- $(_5f).tabs("scrollBy",_6a);
- }else{
- $(_5f).tabs("scrollBy",0);
- }
- _1c(_5f);
- _61.onSelect.call(_5f,_66,_48(_5f,_64));
- };
- function _4f(_6b,_6c){
- return _50(_6b,_6c)!=null;
- };
- $.fn.tabs=function(_6d,_6e){
- if(typeof _6d=="string"){
- return $.fn.tabs.methods[_6d](this,_6e);
- }
- _6d=_6d||{};
- return this.each(function(){
- var _6f=$.data(this,"tabs");
- var _70;
- if(_6f){
- _70=$.extend(_6f.options,_6d);
- _6f.options=_70;
- }else{
- $.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6d),tabs:[],selectHis:[]});
- _23(this);
- }
- _c(this);
- _2e(this);
- _12(this);
- _29(this);
- _5c(this);
- });
- };
- $.fn.tabs.methods={options:function(jq){
- return $.data(jq[0],"tabs").options;
- },tabs:function(jq){
- return $.data(jq[0],"tabs").tabs;
- },resize:function(jq){
- return jq.each(function(){
- _12(this);
- _1c(this);
- });
- },add:function(jq,_71){
- return jq.each(function(){
- _39(this,_71);
- });
- },close:function(jq,_72){
- return jq.each(function(){
- _49(this,_72);
- });
- },getTab:function(jq,_73){
- return _50(jq[0],_73);
- },getTabIndex:function(jq,tab){
- return _48(jq[0],tab);
- },getSelected:function(jq){
- return _1f(jq[0]);
- },select:function(jq,_74){
- return jq.each(function(){
- _3e(this,_74);
- });
- },exists:function(jq,_75){
- return _4f(jq[0],_75);
- },update:function(jq,_76){
- return jq.each(function(){
- _3f(this,_76);
- });
- },enableTab:function(jq,_77){
- return jq.each(function(){
- $(this).tabs("getTab",_77).panel("options").tab.removeClass("tabs-disabled");
- });
- },disableTab:function(jq,_78){
- return jq.each(function(){
- $(this).tabs("getTab",_78).panel("options").tab.addClass("tabs-disabled");
- });
- },scrollBy:function(jq,_79){
- return jq.each(function(){
- var _7a=$(this).tabs("options");
- var _7b=$(this).find(">div.tabs-header>div.tabs-wrap");
- var pos=Math.min(_7b._scrollLeft()+_79,_7c());
- _7b.animate({scrollLeft:pos},_7a.scrollDuration);
- function _7c(){
- var w=0;
- var ul=_7b.children("ul");
- ul.children("li").each(function(){
- w+=$(this).outerWidth(true);
- });
- return w-_7b.width()+(ul.outerWidth()-ul.width());
- };
- });
- }};
- $.fn.tabs.parseOptions=function(_7d){
- return $.extend({},$.parser.parseOptions(_7d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number"}]));
- };
- $.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_7e){
- },onSelect:function(_7f,_80){
- },onBeforeClose:function(_81,_82){
- },onClose:function(_83,_84){
- },onAdd:function(_85,_86){
- },onUpdate:function(_87,_88){
- },onContextMenu:function(e,_89,_8a){
- }};
- })(jQuery);
|