jquery.panel.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. /**
  2. * jQuery EasyUI 1.3.4
  3. *
  4. * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL or commercial licenses
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. * http://www.gnu.org/licenses/gpl.txt
  9. * http://www.jeasyui.com/license_commercial.php
  10. *
  11. */
  12. (function($){
  13. $.fn._remove=function(){
  14. return this.each(function(){
  15. $(this).remove();
  16. try{
  17. this.outerHTML="";
  18. }
  19. catch(err){
  20. }
  21. });
  22. };
  23. function _1(_2){
  24. _2._remove();
  25. };
  26. function _3(_4,_5){
  27. var _6=$.data(_4,"panel").options;
  28. var _7=$.data(_4,"panel").panel;
  29. var _8=_7.children("div.panel-header");
  30. var _9=_7.children("div.panel-body");
  31. if(_5){
  32. if(_5.width){
  33. _6.width=_5.width;
  34. }
  35. if(_5.height){
  36. _6.height=_5.height;
  37. }
  38. if(_5.left!=null){
  39. _6.left=_5.left;
  40. }
  41. if(_5.top!=null){
  42. _6.top=_5.top;
  43. }
  44. }
  45. _6.fit?$.extend(_6,_7._fit()):_7._fit(false);
  46. _7.css({left:_6.left,top:_6.top});
  47. if(!isNaN(_6.width)){
  48. _7._outerWidth(_6.width);
  49. }else{
  50. _7.width("auto");
  51. }
  52. _8.add(_9)._outerWidth(_7.width());
  53. if(!isNaN(_6.height)){
  54. _7._outerHeight(_6.height);
  55. _9._outerHeight(_7.height()-_8._outerHeight());
  56. }else{
  57. _9.height("auto");
  58. }
  59. _7.css("height","");
  60. _6.onResize.apply(_4,[_6.width,_6.height]);
  61. _7.find(">div.panel-body>div").triggerHandler("_resize");
  62. };
  63. function _a(_b,_c){
  64. var _d=$.data(_b,"panel").options;
  65. var _e=$.data(_b,"panel").panel;
  66. if(_c){
  67. if(_c.left!=null){
  68. _d.left=_c.left;
  69. }
  70. if(_c.top!=null){
  71. _d.top=_c.top;
  72. }
  73. }
  74. _e.css({left:_d.left,top:_d.top});
  75. _d.onMove.apply(_b,[_d.left,_d.top]);
  76. };
  77. function _f(_10){
  78. $(_10).addClass("panel-body");
  79. var _11=$("<div class=\"panel\"></div>").insertBefore(_10);
  80. _11[0].appendChild(_10);
  81. _11.bind("_resize",function(){
  82. var _12=$.data(_10,"panel").options;
  83. if(_12.fit==true){
  84. _3(_10);
  85. }
  86. return false;
  87. });
  88. return _11;
  89. };
  90. function _13(_14){
  91. var _15=$.data(_14,"panel").options;
  92. var _16=$.data(_14,"panel").panel;
  93. if(_15.tools&&typeof _15.tools=="string"){
  94. _16.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_15.tools);
  95. }
  96. _1(_16.children("div.panel-header"));
  97. if(_15.title&&!_15.noheader){
  98. var _17=$("<div class=\"panel-header\"><div class=\"panel-title\">"+_15.title+"</div></div>").prependTo(_16);
  99. if(_15.iconCls){
  100. _17.find(".panel-title").addClass("panel-with-icon");
  101. $("<div class=\"panel-icon\"></div>").addClass(_15.iconCls).appendTo(_17);
  102. }
  103. var _18=$("<div class=\"panel-tool\"></div>").appendTo(_17);
  104. _18.bind("click",function(e){
  105. e.stopPropagation();
  106. });
  107. if(_15.tools){
  108. if(typeof _15.tools=="string"){
  109. $(_15.tools).children().each(function(){
  110. $(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_18);
  111. });
  112. }else{
  113. for(var i=0;i<_15.tools.length;i++){
  114. var t=$("<a href=\"javascript:void(0)\"></a>").addClass(_15.tools[i].iconCls).appendTo(_18);
  115. if(_15.tools[i].handler){
  116. t.bind("click",eval(_15.tools[i].handler));
  117. }
  118. }
  119. }
  120. }
  121. if(_15.collapsible){
  122. $("<a class=\"panel-tool-collapse\" href=\"javascript:void(0)\"></a>").appendTo(_18).bind("click",function(){
  123. if(_15.collapsed==true){
  124. _3c(_14,true);
  125. }else{
  126. _2c(_14,true);
  127. }
  128. return false;
  129. });
  130. }
  131. if(_15.minimizable){
  132. $("<a class=\"panel-tool-min\" href=\"javascript:void(0)\"></a>").appendTo(_18).bind("click",function(){
  133. _47(_14);
  134. return false;
  135. });
  136. }
  137. if(_15.maximizable){
  138. $("<a class=\"panel-tool-max\" href=\"javascript:void(0)\"></a>").appendTo(_18).bind("click",function(){
  139. if(_15.maximized==true){
  140. _4b(_14);
  141. }else{
  142. _2b(_14);
  143. }
  144. return false;
  145. });
  146. }
  147. if(_15.closable){
  148. $("<a class=\"panel-tool-close\" href=\"javascript:void(0)\"></a>").appendTo(_18).bind("click",function(){
  149. _19(_14);
  150. return false;
  151. });
  152. }
  153. _16.children("div.panel-body").removeClass("panel-body-noheader");
  154. }else{
  155. _16.children("div.panel-body").addClass("panel-body-noheader");
  156. }
  157. };
  158. function _1a(_1b){
  159. var _1c=$.data(_1b,"panel");
  160. var _1d=_1c.options;
  161. if(_1d.href){
  162. if(!_1c.isLoaded||!_1d.cache){
  163. if(_1d.onBeforeLoad.call(_1b)==false){
  164. return;
  165. }
  166. _1c.isLoaded=false;
  167. _1e(_1b);
  168. if(_1d.loadingMessage){
  169. $(_1b).html($("<div class=\"panel-loading\"></div>").html(_1d.loadingMessage));
  170. }
  171. $.ajax({url:_1d.href,cache:false,dataType:"html",success:function(_1f){
  172. _20(_1d.extractor.call(_1b,_1f));
  173. _1d.onLoad.apply(_1b,arguments);
  174. _1c.isLoaded=true;
  175. }});
  176. }
  177. }else{
  178. if(_1d.content){
  179. if(!_1c.isLoaded){
  180. _1e(_1b);
  181. _20(_1d.content);
  182. _1c.isLoaded=true;
  183. }
  184. }
  185. }
  186. function _20(_21){
  187. $(_1b).html(_21);
  188. if($.parser){
  189. $.parser.parse($(_1b));
  190. }
  191. };
  192. };
  193. function _1e(_22){
  194. var t=$(_22);
  195. t.find(".combo-f").each(function(){
  196. $(this).combo("destroy");
  197. });
  198. t.find(".m-btn").each(function(){
  199. $(this).menubutton("destroy");
  200. });
  201. t.find(".s-btn").each(function(){
  202. $(this).splitbutton("destroy");
  203. });
  204. t.find(".tooltip-f").tooltip("destroy");
  205. };
  206. function _23(_24){
  207. $(_24).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){
  208. $(this).triggerHandler("_resize",[true]);
  209. });
  210. };
  211. function _25(_26,_27){
  212. var _28=$.data(_26,"panel").options;
  213. var _29=$.data(_26,"panel").panel;
  214. if(_27!=true){
  215. if(_28.onBeforeOpen.call(_26)==false){
  216. return;
  217. }
  218. }
  219. _29.show();
  220. _28.closed=false;
  221. _28.minimized=false;
  222. var _2a=_29.children("div.panel-header").find("a.panel-tool-restore");
  223. if(_2a.length){
  224. _28.maximized=true;
  225. }
  226. _28.onOpen.call(_26);
  227. if(_28.maximized==true){
  228. _28.maximized=false;
  229. _2b(_26);
  230. }
  231. if(_28.collapsed==true){
  232. _28.collapsed=false;
  233. _2c(_26);
  234. }
  235. if(!_28.collapsed){
  236. _1a(_26);
  237. _23(_26);
  238. }
  239. };
  240. function _19(_2d,_2e){
  241. var _2f=$.data(_2d,"panel").options;
  242. var _30=$.data(_2d,"panel").panel;
  243. if(_2e!=true){
  244. if(_2f.onBeforeClose.call(_2d)==false){
  245. return;
  246. }
  247. }
  248. _30._fit(false);
  249. _30.hide();
  250. _2f.closed=true;
  251. _2f.onClose.call(_2d);
  252. };
  253. function _31(_32,_33){
  254. var _34=$.data(_32,"panel").options;
  255. var _35=$.data(_32,"panel").panel;
  256. if(_33!=true){
  257. if(_34.onBeforeDestroy.call(_32)==false){
  258. return;
  259. }
  260. }
  261. _1e(_32);
  262. _1(_35);
  263. _34.onDestroy.call(_32);
  264. };
  265. function _2c(_36,_37){
  266. var _38=$.data(_36,"panel").options;
  267. var _39=$.data(_36,"panel").panel;
  268. var _3a=_39.children("div.panel-body");
  269. var _3b=_39.children("div.panel-header").find("a.panel-tool-collapse");
  270. if(_38.collapsed==true){
  271. return;
  272. }
  273. _3a.stop(true,true);
  274. if(_38.onBeforeCollapse.call(_36)==false){
  275. return;
  276. }
  277. _3b.addClass("panel-tool-expand");
  278. if(_37==true){
  279. _3a.slideUp("normal",function(){
  280. _38.collapsed=true;
  281. _38.onCollapse.call(_36);
  282. });
  283. }else{
  284. _3a.hide();
  285. _38.collapsed=true;
  286. _38.onCollapse.call(_36);
  287. }
  288. };
  289. function _3c(_3d,_3e){
  290. var _3f=$.data(_3d,"panel").options;
  291. var _40=$.data(_3d,"panel").panel;
  292. var _41=_40.children("div.panel-body");
  293. var _42=_40.children("div.panel-header").find("a.panel-tool-collapse");
  294. if(_3f.collapsed==false){
  295. return;
  296. }
  297. _41.stop(true,true);
  298. if(_3f.onBeforeExpand.call(_3d)==false){
  299. return;
  300. }
  301. _42.removeClass("panel-tool-expand");
  302. if(_3e==true){
  303. _41.slideDown("normal",function(){
  304. _3f.collapsed=false;
  305. _3f.onExpand.call(_3d);
  306. _1a(_3d);
  307. _23(_3d);
  308. });
  309. }else{
  310. _41.show();
  311. _3f.collapsed=false;
  312. _3f.onExpand.call(_3d);
  313. _1a(_3d);
  314. _23(_3d);
  315. }
  316. };
  317. function _2b(_43){
  318. var _44=$.data(_43,"panel").options;
  319. var _45=$.data(_43,"panel").panel;
  320. var _46=_45.children("div.panel-header").find("a.panel-tool-max");
  321. if(_44.maximized==true){
  322. return;
  323. }
  324. _46.addClass("panel-tool-restore");
  325. if(!$.data(_43,"panel").original){
  326. $.data(_43,"panel").original={width:_44.width,height:_44.height,left:_44.left,top:_44.top,fit:_44.fit};
  327. }
  328. _44.left=0;
  329. _44.top=0;
  330. _44.fit=true;
  331. _3(_43);
  332. _44.minimized=false;
  333. _44.maximized=true;
  334. _44.onMaximize.call(_43);
  335. };
  336. function _47(_48){
  337. var _49=$.data(_48,"panel").options;
  338. var _4a=$.data(_48,"panel").panel;
  339. _4a._fit(false);
  340. _4a.hide();
  341. _49.minimized=true;
  342. _49.maximized=false;
  343. _49.onMinimize.call(_48);
  344. };
  345. function _4b(_4c){
  346. var _4d=$.data(_4c,"panel").options;
  347. var _4e=$.data(_4c,"panel").panel;
  348. var _4f=_4e.children("div.panel-header").find("a.panel-tool-max");
  349. if(_4d.maximized==false){
  350. return;
  351. }
  352. _4e.show();
  353. _4f.removeClass("panel-tool-restore");
  354. $.extend(_4d,$.data(_4c,"panel").original);
  355. _3(_4c);
  356. _4d.minimized=false;
  357. _4d.maximized=false;
  358. $.data(_4c,"panel").original=null;
  359. _4d.onRestore.call(_4c);
  360. };
  361. function _50(_51){
  362. var _52=$.data(_51,"panel").options;
  363. var _53=$.data(_51,"panel").panel;
  364. var _54=$(_51).panel("header");
  365. var _55=$(_51).panel("body");
  366. _53.css(_52.style);
  367. _53.addClass(_52.cls);
  368. if(_52.border){
  369. _54.removeClass("panel-header-noborder");
  370. _55.removeClass("panel-body-noborder");
  371. }else{
  372. _54.addClass("panel-header-noborder");
  373. _55.addClass("panel-body-noborder");
  374. }
  375. _54.addClass(_52.headerCls);
  376. _55.addClass(_52.bodyCls);
  377. if(_52.id){
  378. $(_51).attr("id",_52.id);
  379. }else{
  380. $(_51).attr("id","");
  381. }
  382. };
  383. function _56(_57,_58){
  384. $.data(_57,"panel").options.title=_58;
  385. $(_57).panel("header").find("div.panel-title").html(_58);
  386. };
  387. var TO=false;
  388. var _59=true;
  389. $(window).unbind(".panel").bind("resize.panel",function(){
  390. if(!_59){
  391. return;
  392. }
  393. if(TO!==false){
  394. clearTimeout(TO);
  395. }
  396. TO=setTimeout(function(){
  397. _59=false;
  398. var _5a=$("body.layout");
  399. if(_5a.length){
  400. _5a.layout("resize");
  401. }else{
  402. $("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize");
  403. }
  404. _59=true;
  405. TO=false;
  406. },200);
  407. });
  408. $.fn.panel=function(_5b,_5c){
  409. if(typeof _5b=="string"){
  410. return $.fn.panel.methods[_5b](this,_5c);
  411. }
  412. _5b=_5b||{};
  413. return this.each(function(){
  414. var _5d=$.data(this,"panel");
  415. var _5e;
  416. if(_5d){
  417. _5e=$.extend(_5d.options,_5b);
  418. _5d.isLoaded=false;
  419. }else{
  420. _5e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_5b);
  421. $(this).attr("title","");
  422. _5d=$.data(this,"panel",{options:_5e,panel:_f(this),isLoaded:false});
  423. }
  424. _13(this);
  425. _50(this);
  426. if(_5e.doSize==true){
  427. _5d.panel.css("display","block");
  428. _3(this);
  429. }
  430. if(_5e.closed==true||_5e.minimized==true){
  431. _5d.panel.hide();
  432. }else{
  433. _25(this);
  434. }
  435. });
  436. };
  437. $.fn.panel.methods={options:function(jq){
  438. return $.data(jq[0],"panel").options;
  439. },panel:function(jq){
  440. return $.data(jq[0],"panel").panel;
  441. },header:function(jq){
  442. return $.data(jq[0],"panel").panel.find(">div.panel-header");
  443. },body:function(jq){
  444. return $.data(jq[0],"panel").panel.find(">div.panel-body");
  445. },setTitle:function(jq,_5f){
  446. return jq.each(function(){
  447. _56(this,_5f);
  448. });
  449. },open:function(jq,_60){
  450. return jq.each(function(){
  451. _25(this,_60);
  452. });
  453. },close:function(jq,_61){
  454. return jq.each(function(){
  455. _19(this,_61);
  456. });
  457. },destroy:function(jq,_62){
  458. return jq.each(function(){
  459. _31(this,_62);
  460. });
  461. },refresh:function(jq,_63){
  462. return jq.each(function(){
  463. $.data(this,"panel").isLoaded=false;
  464. if(_63){
  465. $.data(this,"panel").options.href=_63;
  466. }
  467. _1a(this);
  468. });
  469. },resize:function(jq,_64){
  470. return jq.each(function(){
  471. _3(this,_64);
  472. });
  473. },move:function(jq,_65){
  474. return jq.each(function(){
  475. _a(this,_65);
  476. });
  477. },maximize:function(jq){
  478. return jq.each(function(){
  479. _2b(this);
  480. });
  481. },minimize:function(jq){
  482. return jq.each(function(){
  483. _47(this);
  484. });
  485. },restore:function(jq){
  486. return jq.each(function(){
  487. _4b(this);
  488. });
  489. },collapse:function(jq,_66){
  490. return jq.each(function(){
  491. _2c(this,_66);
  492. });
  493. },expand:function(jq,_67){
  494. return jq.each(function(){
  495. _3c(this,_67);
  496. });
  497. }};
  498. $.fn.panel.parseOptions=function(_68){
  499. var t=$(_68);
  500. return $.extend({},$.parser.parseOptions(_68,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)});
  501. };
  502. $.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(_69){
  503. var _6a=/<body[^>]*>((.|[\n\r])*)<\/body>/im;
  504. var _6b=_6a.exec(_69);
  505. if(_6b){
  506. return _6b[1];
  507. }else{
  508. return _69;
  509. }
  510. },onBeforeLoad:function(){
  511. },onLoad:function(){
  512. },onBeforeOpen:function(){
  513. },onOpen:function(){
  514. },onBeforeClose:function(){
  515. },onClose:function(){
  516. },onBeforeDestroy:function(){
  517. },onDestroy:function(){
  518. },onResize:function(_6c,_6d){
  519. },onMove:function(_6e,top){
  520. },onMaximize:function(){
  521. },onRestore:function(){
  522. },onMinimize:function(){
  523. },onBeforeCollapse:function(){
  524. },onBeforeExpand:function(){
  525. },onCollapse:function(){
  526. },onExpand:function(){
  527. }};
  528. })(jQuery);