473 lines
12 KiB
JavaScript
473 lines
12 KiB
JavaScript
/**
|
|
* jQuery EasyUI 1.2.5
|
|
*
|
|
* Licensed under the GPL terms
|
|
* To use it on other terms please contact us
|
|
*
|
|
* Copyright(c) 2009-2011 stworthy [ stworthy@gmail.com ]
|
|
*
|
|
*/
|
|
(function($){
|
|
function _1(_2){
|
|
var _3=$(_2).children("div.tabs-header");
|
|
var _4=0;
|
|
$("ul.tabs li",_3).each(function(){
|
|
_4+=$(this).outerWidth(true);
|
|
});
|
|
var _5=_3.children("div.tabs-wrap").width();
|
|
var _6=parseInt(_3.find("ul.tabs").css("padding-left"));
|
|
return _4-_5+_6;
|
|
};
|
|
function _7(_8){
|
|
var _9=$.data(_8,"tabs").options;
|
|
var _a=$(_8).children("div.tabs-header");
|
|
var _b=_a.children("div.tabs-tool");
|
|
var _c=_a.children("div.tabs-scroller-left");
|
|
var _d=_a.children("div.tabs-scroller-right");
|
|
var _e=_a.children("div.tabs-wrap");
|
|
var _f=($.boxModel==true?(_a.outerHeight()-(_b.outerHeight()-_b.height())):_a.outerHeight());
|
|
if(_9.plain){
|
|
_f-=2;
|
|
}
|
|
_b.height(_f);
|
|
var _10=0;
|
|
$("ul.tabs li",_a).each(function(){
|
|
_10+=$(this).outerWidth(true);
|
|
});
|
|
var _11=_a.width()-_b.outerWidth();
|
|
if(_10>_11){
|
|
_c.show();
|
|
_d.show();
|
|
_b.css("right",_d.outerWidth());
|
|
_e.css({marginLeft:_c.outerWidth(),marginRight:_d.outerWidth()+_b.outerWidth(),left:0,width:_11-_c.outerWidth()-_d.outerWidth()});
|
|
}else{
|
|
_c.hide();
|
|
_d.hide();
|
|
_b.css("right",0);
|
|
_e.css({marginLeft:0,marginRight:_b.outerWidth(),left:0,width:_11});
|
|
_e.scrollLeft(0);
|
|
}
|
|
};
|
|
function _12(_13){
|
|
var _14=$.data(_13,"tabs").options;
|
|
var _15=$(_13).children("div.tabs-header");
|
|
if(_14.tools){
|
|
if(typeof _14.tools=="string"){
|
|
$(_14.tools).addClass("tabs-tool").appendTo(_15);
|
|
$(_14.tools).show();
|
|
}else{
|
|
_15.children("div.tabs-tool").remove();
|
|
var _16=$("<div class=\"tabs-tool\"></div>").appendTo(_15);
|
|
for(var i=0;i<_14.tools.length;i++){
|
|
var _17=$("<a href=\"javascript:void(0);\"></a>").appendTo(_16);
|
|
_17[0].onclick=eval(_14.tools[i].handler||function(){
|
|
});
|
|
_17.linkbutton($.extend({},_14.tools[i],{plain:true}));
|
|
}
|
|
}
|
|
}else{
|
|
_15.children("div.tabs-tool").remove();
|
|
}
|
|
};
|
|
function _18(_19){
|
|
var _1a=$.data(_19,"tabs").options;
|
|
var cc=$(_19);
|
|
if(_1a.fit==true){
|
|
var p=cc.parent();
|
|
_1a.width=p.width();
|
|
_1a.height=p.height();
|
|
}
|
|
cc.width(_1a.width).height(_1a.height);
|
|
var _1b=$(_19).children("div.tabs-header");
|
|
if($.boxModel==true){
|
|
_1b.width(_1a.width-(_1b.outerWidth()-_1b.width()));
|
|
}else{
|
|
_1b.width(_1a.width);
|
|
}
|
|
_7(_19);
|
|
var _1c=$(_19).children("div.tabs-panels");
|
|
var _1d=_1a.height;
|
|
if(!isNaN(_1d)){
|
|
if($.boxModel==true){
|
|
var _1e=_1c.outerHeight()-_1c.height();
|
|
_1c.css("height",(_1d-_1b.outerHeight()-_1e)||"auto");
|
|
}else{
|
|
_1c.css("height",_1d-_1b.outerHeight());
|
|
}
|
|
}else{
|
|
_1c.height("auto");
|
|
}
|
|
var _1f=_1a.width;
|
|
if(!isNaN(_1f)){
|
|
if($.boxModel==true){
|
|
_1c.width(_1f-(_1c.outerWidth()-_1c.width()));
|
|
}else{
|
|
_1c.width(_1f);
|
|
}
|
|
}else{
|
|
_1c.width("auto");
|
|
}
|
|
};
|
|
function _20(_21){
|
|
var _22=$.data(_21,"tabs").options;
|
|
var tab=_23(_21);
|
|
if(tab){
|
|
var _24=$(_21).children("div.tabs-panels");
|
|
var _25=_22.width=="auto"?"auto":_24.width();
|
|
var _26=_22.height=="auto"?"auto":_24.height();
|
|
tab.panel("resize",{width:_25,height:_26});
|
|
}
|
|
};
|
|
function _27(_28){
|
|
var cc=$(_28);
|
|
cc.addClass("tabs-container");
|
|
cc.wrapInner("<div class=\"tabs-panels\"/>");
|
|
$("<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(_28);
|
|
var _29=[];
|
|
var tp=cc.children("div.tabs-panels");
|
|
tp.children("div[selected]").attr("toselect","true");
|
|
tp.children("div").each(function(){
|
|
var pp=$(this);
|
|
_29.push(pp);
|
|
_37(_28,pp);
|
|
});
|
|
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,_2a){
|
|
var _2b=$.data(_28,"tabs").options;
|
|
if(_2b.fit==true||_2a){
|
|
_18(_28);
|
|
_20(_28);
|
|
}
|
|
return false;
|
|
});
|
|
return _29;
|
|
};
|
|
function _2c(_2d){
|
|
var _2e=$.data(_2d,"tabs").options;
|
|
var _2f=$(_2d).children("div.tabs-header");
|
|
var _30=$(_2d).children("div.tabs-panels");
|
|
if(_2e.plain==true){
|
|
_2f.addClass("tabs-header-plain");
|
|
}else{
|
|
_2f.removeClass("tabs-header-plain");
|
|
}
|
|
if(_2e.border==true){
|
|
_2f.removeClass("tabs-header-noborder");
|
|
_30.removeClass("tabs-panels-noborder");
|
|
}else{
|
|
_2f.addClass("tabs-header-noborder");
|
|
_30.addClass("tabs-panels-noborder");
|
|
}
|
|
$(".tabs-scroller-left",_2f).unbind(".tabs").bind("click.tabs",function(){
|
|
var _31=$(".tabs-wrap",_2f);
|
|
var pos=_31.scrollLeft()-_2e.scrollIncrement;
|
|
_31.animate({scrollLeft:pos},_2e.scrollDuration);
|
|
});
|
|
$(".tabs-scroller-right",_2f).unbind(".tabs").bind("click.tabs",function(){
|
|
var _32=$(".tabs-wrap",_2f);
|
|
var pos=Math.min(_32.scrollLeft()+_2e.scrollIncrement,_1(_2d));
|
|
_32.animate({scrollLeft:pos},_2e.scrollDuration);
|
|
});
|
|
var _33=$.data(_2d,"tabs").tabs;
|
|
for(var i=0,len=_33.length;i<len;i++){
|
|
var _34=_33[i];
|
|
var tab=_34.panel("options").tab;
|
|
tab.unbind(".tabs").bind("click.tabs",{p:_34},function(e){
|
|
_46(_2d,_36(_2d,e.data.p));
|
|
}).bind("contextmenu.tabs",{p:_34},function(e){
|
|
_2e.onContextMenu.call(_2d,e,e.data.p.panel("options").title);
|
|
});
|
|
tab.find("a.tabs-close").unbind(".tabs").bind("click.tabs",{p:_34},function(e){
|
|
_35(_2d,_36(_2d,e.data.p));
|
|
return false;
|
|
});
|
|
}
|
|
};
|
|
function _37(_38,pp,_39){
|
|
_39=_39||{};
|
|
pp.panel($.extend({},_39,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_39.icon?_39.icon:undefined),onLoad:function(){
|
|
if(_39.onLoad){
|
|
_39.onLoad.call(this,arguments);
|
|
}
|
|
$.data(_38,"tabs").options.onLoad.call(_38,pp);
|
|
}}));
|
|
var _3a=pp.panel("options");
|
|
var _3b=$(_38).children("div.tabs-header");
|
|
var _3c=$("ul.tabs",_3b);
|
|
var tab=$("<li></li>").appendTo(_3c);
|
|
var _3d=$("<a href=\"javascript:void(0)\" class=\"tabs-inner\"></a>").appendTo(tab);
|
|
var _3e=$("<span class=\"tabs-title\"></span>").html(_3a.title).appendTo(_3d);
|
|
var _3f=$("<span class=\"tabs-icon\"></span>").appendTo(_3d);
|
|
if(_3a.closable){
|
|
_3e.addClass("tabs-closable");
|
|
$("<a href=\"javascript:void(0)\" class=\"tabs-close\"></a>").appendTo(tab);
|
|
}
|
|
if(_3a.iconCls){
|
|
_3e.addClass("tabs-with-icon");
|
|
_3f.addClass(_3a.iconCls);
|
|
}
|
|
if(_3a.tools){
|
|
var _40=$("<span class=\"tabs-p-tool\"></span>").insertAfter(_3d);
|
|
if(typeof _3a.tools=="string"){
|
|
$(_3a.tools).children().appendTo(_40);
|
|
}else{
|
|
for(var i=0;i<_3a.tools.length;i++){
|
|
var t=$("<a href=\"javascript:void(0)\"></a>").appendTo(_40);
|
|
t.addClass(_3a.tools[i].iconCls);
|
|
if(_3a.tools[i].handler){
|
|
t.bind("click",eval(_3a.tools[i].handler));
|
|
}
|
|
}
|
|
}
|
|
var pr=_40.children().length*12;
|
|
if(_3a.closable){
|
|
pr+=8;
|
|
}else{
|
|
pr-=3;
|
|
_40.css("right","5px");
|
|
}
|
|
_3e.css("padding-right",pr+"px");
|
|
}
|
|
_3a.tab=tab;
|
|
};
|
|
function _41(_42,_43){
|
|
var _44=$.data(_42,"tabs").options;
|
|
var _45=$.data(_42,"tabs").tabs;
|
|
var pp=$("<div></div>").appendTo($(_42).children("div.tabs-panels"));
|
|
_45.push(pp);
|
|
_37(_42,pp,_43);
|
|
_44.onAdd.call(_42,_43.title);
|
|
_7(_42);
|
|
_2c(_42);
|
|
_46(_42,_45.length-1);
|
|
};
|
|
function _47(_48,_49){
|
|
var _4a=$.data(_48,"tabs").selectHis;
|
|
var pp=_49.tab;
|
|
var _4b=pp.panel("options").title;
|
|
pp.panel($.extend({},_49.options,{iconCls:(_49.options.icon?_49.options.icon:undefined)}));
|
|
var _4c=pp.panel("options");
|
|
var tab=_4c.tab;
|
|
tab.find("span.tabs-icon").attr("class","tabs-icon");
|
|
tab.find("a.tabs-close").remove();
|
|
tab.find("span.tabs-title").html(_4c.title);
|
|
if(_4c.closable){
|
|
tab.find("span.tabs-title").addClass("tabs-closable");
|
|
$("<a href=\"javascript:void(0)\" class=\"tabs-close\"></a>").appendTo(tab);
|
|
}else{
|
|
tab.find("span.tabs-title").removeClass("tabs-closable");
|
|
}
|
|
if(_4c.iconCls){
|
|
tab.find("span.tabs-title").addClass("tabs-with-icon");
|
|
tab.find("span.tabs-icon").addClass(_4c.iconCls);
|
|
}else{
|
|
tab.find("span.tabs-title").removeClass("tabs-with-icon");
|
|
}
|
|
if(_4b!=_4c.title){
|
|
for(var i=0;i<_4a.length;i++){
|
|
if(_4a[i]==_4b){
|
|
_4a[i]=_4c.title;
|
|
}
|
|
}
|
|
}
|
|
_2c(_48);
|
|
$.data(_48,"tabs").options.onUpdate.call(_48,_4c.title);
|
|
};
|
|
function _35(_4d,_4e){
|
|
var _4f=$.data(_4d,"tabs").options;
|
|
var _50=$.data(_4d,"tabs").tabs;
|
|
var _51=$.data(_4d,"tabs").selectHis;
|
|
if(!_52(_4d,_4e)){
|
|
return;
|
|
}
|
|
var tab=_53(_4d,_4e);
|
|
var _54=tab.panel("options").title;
|
|
if(_4f.onBeforeClose.call(_4d,_54)==false){
|
|
return;
|
|
}
|
|
var tab=_53(_4d,_4e,true);
|
|
tab.panel("options").tab.remove();
|
|
tab.panel("destroy");
|
|
_4f.onClose.call(_4d,_54);
|
|
_7(_4d);
|
|
for(var i=0;i<_51.length;i++){
|
|
if(_51[i]==_54){
|
|
_51.splice(i,1);
|
|
i--;
|
|
}
|
|
}
|
|
var _55=_51.pop();
|
|
if(_55){
|
|
_46(_4d,_55);
|
|
}else{
|
|
if(_50.length){
|
|
_46(_4d,0);
|
|
}
|
|
}
|
|
};
|
|
function _53(_56,_57,_58){
|
|
var _59=$.data(_56,"tabs").tabs;
|
|
if(typeof _57=="number"){
|
|
if(_57<0||_57>=_59.length){
|
|
return null;
|
|
}else{
|
|
var tab=_59[_57];
|
|
if(_58){
|
|
_59.splice(_57,1);
|
|
}
|
|
return tab;
|
|
}
|
|
}
|
|
for(var i=0;i<_59.length;i++){
|
|
var tab=_59[i];
|
|
if(tab.panel("options").title==_57){
|
|
if(_58){
|
|
_59.splice(i,1);
|
|
}
|
|
return tab;
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
function _36(_5a,tab){
|
|
var _5b=$.data(_5a,"tabs").tabs;
|
|
for(var i=0;i<_5b.length;i++){
|
|
if(_5b[i][0]==$(tab)[0]){
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
};
|
|
function _23(_5c){
|
|
var _5d=$.data(_5c,"tabs").tabs;
|
|
for(var i=0;i<_5d.length;i++){
|
|
var tab=_5d[i];
|
|
if(tab.panel("options").closed==false){
|
|
return tab;
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
function _5e(_5f){
|
|
var _60=$.data(_5f,"tabs").tabs;
|
|
for(var i=0;i<_60.length;i++){
|
|
if(_60[i].attr("toselect")=="true"){
|
|
_46(_5f,i);
|
|
return;
|
|
}
|
|
}
|
|
if(_60.length){
|
|
_46(_5f,0);
|
|
}
|
|
};
|
|
function _46(_61,_62){
|
|
var _63=$.data(_61,"tabs").options;
|
|
var _64=$.data(_61,"tabs").tabs;
|
|
var _65=$.data(_61,"tabs").selectHis;
|
|
if(_64.length==0){
|
|
return;
|
|
}
|
|
var _66=_53(_61,_62);
|
|
if(!_66){
|
|
return;
|
|
}
|
|
var _67=_23(_61);
|
|
if(_67){
|
|
_67.panel("close");
|
|
_67.panel("options").tab.removeClass("tabs-selected");
|
|
}
|
|
_66.panel("open");
|
|
var _68=_66.panel("options").title;
|
|
_65.push(_68);
|
|
var tab=_66.panel("options").tab;
|
|
tab.addClass("tabs-selected");
|
|
var _69=$(_61).find(">div.tabs-header div.tabs-wrap");
|
|
var _6a=tab.position().left+_69.scrollLeft();
|
|
var _6b=_6a-_69.scrollLeft();
|
|
var _6c=_6b+tab.outerWidth();
|
|
if(_6b<0||_6c>_69.innerWidth()){
|
|
var pos=Math.min(_6a-(_69.width()-tab.width())/2,_1(_61));
|
|
_69.animate({scrollLeft:pos},_63.scrollDuration);
|
|
}else{
|
|
var pos=Math.min(_69.scrollLeft(),_1(_61));
|
|
_69.animate({scrollLeft:pos},_63.scrollDuration);
|
|
}
|
|
_20(_61);
|
|
_63.onSelect.call(_61,_68);
|
|
};
|
|
function _52(_6d,_6e){
|
|
return _53(_6d,_6e)!=null;
|
|
};
|
|
$.fn.tabs=function(_6f,_70){
|
|
if(typeof _6f=="string"){
|
|
return $.fn.tabs.methods[_6f](this,_70);
|
|
}
|
|
_6f=_6f||{};
|
|
return this.each(function(){
|
|
var _71=$.data(this,"tabs");
|
|
var _72;
|
|
if(_71){
|
|
_72=$.extend(_71.options,_6f);
|
|
_71.options=_72;
|
|
}else{
|
|
$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_6f),tabs:_27(this),selectHis:[]});
|
|
}
|
|
_12(this);
|
|
_2c(this);
|
|
_18(this);
|
|
_5e(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(){
|
|
_18(this);
|
|
_20(this);
|
|
});
|
|
},add:function(jq,_73){
|
|
return jq.each(function(){
|
|
_41(this,_73);
|
|
});
|
|
},close:function(jq,_74){
|
|
return jq.each(function(){
|
|
_35(this,_74);
|
|
});
|
|
},getTab:function(jq,_75){
|
|
return _53(jq[0],_75);
|
|
},getTabIndex:function(jq,tab){
|
|
return _36(jq[0],tab);
|
|
},getSelected:function(jq){
|
|
return _23(jq[0]);
|
|
},select:function(jq,_76){
|
|
return jq.each(function(){
|
|
_46(this,_76);
|
|
});
|
|
},exists:function(jq,_77){
|
|
return _52(jq[0],_77);
|
|
},update:function(jq,_78){
|
|
return jq.each(function(){
|
|
_47(this,_78);
|
|
});
|
|
}};
|
|
$.fn.tabs.parseOptions=function(_79){
|
|
var t=$(_79);
|
|
return {width:(parseInt(_79.style.width)||undefined),height:(parseInt(_79.style.height)||undefined),fit:(t.attr("fit")?t.attr("fit")=="true":undefined),border:(t.attr("border")?t.attr("border")=="true":undefined),plain:(t.attr("plain")?t.attr("plain")=="true":undefined),tools:t.attr("tools")};
|
|
};
|
|
$.fn.tabs.defaults={width:"auto",height:"auto",plain:false,fit:false,border:true,tools:null,scrollIncrement:100,scrollDuration:400,onLoad:function(_7a){
|
|
},onSelect:function(_7b){
|
|
},onBeforeClose:function(_7c){
|
|
},onClose:function(_7d){
|
|
},onAdd:function(_7e){
|
|
},onUpdate:function(_7f){
|
|
},onContextMenu:function(e,_80){
|
|
}};
|
|
})(jQuery);
|
|
|