jquery.tree.js 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  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. function _1(_2){
  14. var _3=$(_2);
  15. _3.addClass("tree");
  16. return _3;
  17. };
  18. function _4(_5){
  19. var _6=[];
  20. _7(_6,$(_5));
  21. function _7(aa,_8){
  22. _8.children("li").each(function(){
  23. var _9=$(this);
  24. var _a=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(_9.attr("checked")?true:undefined)});
  25. _a.text=_9.children("span").html();
  26. if(!_a.text){
  27. _a.text=_9.html();
  28. }
  29. var _b=_9.children("ul");
  30. if(_b.length){
  31. _a.children=[];
  32. _7(_a.children,_b);
  33. }
  34. aa.push(_a);
  35. });
  36. };
  37. return _6;
  38. };
  39. function _c(_d){
  40. var _e=$.data(_d,"tree").options;
  41. $(_d).unbind().bind("mouseover",function(e){
  42. var tt=$(e.target);
  43. var _f=tt.closest("div.tree-node");
  44. if(!_f.length){
  45. return;
  46. }
  47. _f.addClass("tree-node-hover");
  48. if(tt.hasClass("tree-hit")){
  49. if(tt.hasClass("tree-expanded")){
  50. tt.addClass("tree-expanded-hover");
  51. }else{
  52. tt.addClass("tree-collapsed-hover");
  53. }
  54. }
  55. e.stopPropagation();
  56. }).bind("mouseout",function(e){
  57. var tt=$(e.target);
  58. var _10=tt.closest("div.tree-node");
  59. if(!_10.length){
  60. return;
  61. }
  62. _10.removeClass("tree-node-hover");
  63. if(tt.hasClass("tree-hit")){
  64. if(tt.hasClass("tree-expanded")){
  65. tt.removeClass("tree-expanded-hover");
  66. }else{
  67. tt.removeClass("tree-collapsed-hover");
  68. }
  69. }
  70. e.stopPropagation();
  71. }).bind("click",function(e){
  72. var tt=$(e.target);
  73. var _11=tt.closest("div.tree-node");
  74. if(!_11.length){
  75. return;
  76. }
  77. if(tt.hasClass("tree-hit")){
  78. _86(_d,_11[0]);
  79. return false;
  80. }else{
  81. if(tt.hasClass("tree-checkbox")){
  82. _39(_d,_11[0],!tt.hasClass("tree-checkbox1"));
  83. return false;
  84. }else{
  85. _d8(_d,_11[0]);
  86. _e.onClick.call(_d,_14(_d,_11[0]));
  87. }
  88. }
  89. e.stopPropagation();
  90. }).bind("dblclick",function(e){
  91. var _12=$(e.target).closest("div.tree-node");
  92. if(!_12.length){
  93. return;
  94. }
  95. _d8(_d,_12[0]);
  96. _e.onDblClick.call(_d,_14(_d,_12[0]));
  97. e.stopPropagation();
  98. }).bind("contextmenu",function(e){
  99. var _13=$(e.target).closest("div.tree-node");
  100. if(!_13.length){
  101. return;
  102. }
  103. _e.onContextMenu.call(_d,e,_14(_d,_13[0]));
  104. e.stopPropagation();
  105. });
  106. };
  107. function _15(_16){
  108. var _17=$(_16).find("div.tree-node");
  109. _17.draggable("disable");
  110. _17.css("cursor","pointer");
  111. };
  112. function _18(_19){
  113. var _1a=$.data(_19,"tree");
  114. var _1b=_1a.options;
  115. var _1c=_1a.tree;
  116. _1a.disabledNodes=[];
  117. _1c.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_1d){
  118. var p=$("<div class=\"tree-node-proxy\"></div>").appendTo("body");
  119. p.html("<span class=\"tree-dnd-icon tree-dnd-no\">&nbsp;</span>"+$(_1d).find(".tree-title").html());
  120. p.hide();
  121. return p;
  122. },deltaX:15,deltaY:15,onBeforeDrag:function(e){
  123. if(_1b.onBeforeDrag.call(_19,_14(_19,this))==false){
  124. return false;
  125. }
  126. if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){
  127. return false;
  128. }
  129. if(e.which!=1){
  130. return false;
  131. }
  132. $(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"});
  133. var _1e=$(this).find("span.tree-indent");
  134. if(_1e.length){
  135. e.data.offsetWidth-=_1e.length*_1e.width();
  136. }
  137. },onStartDrag:function(){
  138. $(this).draggable("proxy").css({left:-10000,top:-10000});
  139. _1b.onStartDrag.call(_19,_14(_19,this));
  140. var _1f=_14(_19,this);
  141. if(_1f.id==undefined){
  142. _1f.id="easyui_tree_node_id_temp";
  143. _cb(_19,_1f);
  144. }
  145. _1a.draggingNodeId=_1f.id;
  146. },onDrag:function(e){
  147. var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY;
  148. var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  149. if(d>3){
  150. $(this).draggable("proxy").show();
  151. }
  152. this.pageY=e.pageY;
  153. },onStopDrag:function(){
  154. $(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"});
  155. for(var i=0;i<_1a.disabledNodes.length;i++){
  156. $(_1a.disabledNodes[i]).droppable("enable");
  157. }
  158. _1a.disabledNodes=[];
  159. var _20=_d5(_19,_1a.draggingNodeId);
  160. if(_20&&_20.id=="easyui_tree_node_id_temp"){
  161. _20.id="";
  162. _cb(_19,_20);
  163. }
  164. _1b.onStopDrag.call(_19,_20);
  165. }}).droppable({accept:"div.tree-node",onDragEnter:function(e,_21){
  166. if(_1b.onDragEnter.call(_19,this,_14(_19,_21))==false){
  167. _22(_21,false);
  168. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  169. $(this).droppable("disable");
  170. _1a.disabledNodes.push(this);
  171. }
  172. },onDragOver:function(e,_23){
  173. if($(this).droppable("options").disabled){
  174. return;
  175. }
  176. var _24=_23.pageY;
  177. var top=$(this).offset().top;
  178. var _25=top+$(this).outerHeight();
  179. _22(_23,true);
  180. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  181. if(_24>top+(_25-top)/2){
  182. if(_25-_24<5){
  183. $(this).addClass("tree-node-bottom");
  184. }else{
  185. $(this).addClass("tree-node-append");
  186. }
  187. }else{
  188. if(_24-top<5){
  189. $(this).addClass("tree-node-top");
  190. }else{
  191. $(this).addClass("tree-node-append");
  192. }
  193. }
  194. if(_1b.onDragOver.call(_19,this,_14(_19,_23))==false){
  195. _22(_23,false);
  196. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  197. $(this).droppable("disable");
  198. _1a.disabledNodes.push(this);
  199. }
  200. },onDragLeave:function(e,_26){
  201. _22(_26,false);
  202. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  203. _1b.onDragLeave.call(_19,this,_14(_19,_26));
  204. },onDrop:function(e,_27){
  205. var _28=this;
  206. var _29,_2a;
  207. if($(this).hasClass("tree-node-append")){
  208. _29=_2b;
  209. _2a="append";
  210. }else{
  211. _29=_2c;
  212. _2a=$(this).hasClass("tree-node-top")?"top":"bottom";
  213. }
  214. if(_1b.onBeforeDrop.call(_19,_28,_c4(_19,_27),_2a)==false){
  215. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  216. return;
  217. }
  218. _29(_27,_28,_2a);
  219. $(this).removeClass("tree-node-append tree-node-top tree-node-bottom");
  220. }});
  221. function _22(_2d,_2e){
  222. var _2f=$(_2d).draggable("proxy").find("span.tree-dnd-icon");
  223. _2f.removeClass("tree-dnd-yes tree-dnd-no").addClass(_2e?"tree-dnd-yes":"tree-dnd-no");
  224. };
  225. function _2b(_30,_31){
  226. if(_14(_19,_31).state=="closed"){
  227. _7a(_19,_31,function(){
  228. _32();
  229. });
  230. }else{
  231. _32();
  232. }
  233. function _32(){
  234. var _33=$(_19).tree("pop",_30);
  235. $(_19).tree("append",{parent:_31,data:[_33]});
  236. _1b.onDrop.call(_19,_31,_33,"append");
  237. };
  238. };
  239. function _2c(_34,_35,_36){
  240. var _37={};
  241. if(_36=="top"){
  242. _37.before=_35;
  243. }else{
  244. _37.after=_35;
  245. }
  246. var _38=$(_19).tree("pop",_34);
  247. _37.data=_38;
  248. $(_19).tree("insert",_37);
  249. _1b.onDrop.call(_19,_35,_38,_36);
  250. };
  251. };
  252. function _39(_3a,_3b,_3c){
  253. var _3d=$.data(_3a,"tree").options;
  254. if(!_3d.checkbox){
  255. return;
  256. }
  257. var _3e=_14(_3a,_3b);
  258. if(_3d.onBeforeCheck.call(_3a,_3e,_3c)==false){
  259. return;
  260. }
  261. var _3f=$(_3b);
  262. var ck=_3f.find(".tree-checkbox");
  263. ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2");
  264. if(_3c){
  265. ck.addClass("tree-checkbox1");
  266. }else{
  267. ck.addClass("tree-checkbox0");
  268. }
  269. if(_3d.cascadeCheck){
  270. _40(_3f);
  271. _41(_3f);
  272. }
  273. _3d.onCheck.call(_3a,_3e,_3c);
  274. function _41(_42){
  275. var _43=_42.next().find(".tree-checkbox");
  276. _43.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2");
  277. if(_42.find(".tree-checkbox").hasClass("tree-checkbox1")){
  278. _43.addClass("tree-checkbox1");
  279. }else{
  280. _43.addClass("tree-checkbox0");
  281. }
  282. };
  283. function _40(_44){
  284. var _45=_91(_3a,_44[0]);
  285. if(_45){
  286. var ck=$(_45.target).find(".tree-checkbox");
  287. ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2");
  288. if(_46(_44)){
  289. ck.addClass("tree-checkbox1");
  290. }else{
  291. if(_47(_44)){
  292. ck.addClass("tree-checkbox0");
  293. }else{
  294. ck.addClass("tree-checkbox2");
  295. }
  296. }
  297. _40($(_45.target));
  298. }
  299. function _46(n){
  300. var ck=n.find(".tree-checkbox");
  301. if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){
  302. return false;
  303. }
  304. var b=true;
  305. n.parent().siblings().each(function(){
  306. if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){
  307. b=false;
  308. }
  309. });
  310. return b;
  311. };
  312. function _47(n){
  313. var ck=n.find(".tree-checkbox");
  314. if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){
  315. return false;
  316. }
  317. var b=true;
  318. n.parent().siblings().each(function(){
  319. if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){
  320. b=false;
  321. }
  322. });
  323. return b;
  324. };
  325. };
  326. };
  327. function _48(_49,_4a){
  328. var _4b=$.data(_49,"tree").options;
  329. var _4c=$(_4a);
  330. if(_4d(_49,_4a)){
  331. var ck=_4c.find(".tree-checkbox");
  332. if(ck.length){
  333. if(ck.hasClass("tree-checkbox1")){
  334. _39(_49,_4a,true);
  335. }else{
  336. _39(_49,_4a,false);
  337. }
  338. }else{
  339. if(_4b.onlyLeafCheck){
  340. $("<span class=\"tree-checkbox tree-checkbox0\"></span>").insertBefore(_4c.find(".tree-title"));
  341. }
  342. }
  343. }else{
  344. var ck=_4c.find(".tree-checkbox");
  345. if(_4b.onlyLeafCheck){
  346. ck.remove();
  347. }else{
  348. if(ck.hasClass("tree-checkbox1")){
  349. _39(_49,_4a,true);
  350. }else{
  351. if(ck.hasClass("tree-checkbox2")){
  352. var _4e=true;
  353. var _4f=true;
  354. var _50=_51(_49,_4a);
  355. for(var i=0;i<_50.length;i++){
  356. if(_50[i].checked){
  357. _4f=false;
  358. }else{
  359. _4e=false;
  360. }
  361. }
  362. if(_4e){
  363. _39(_49,_4a,true);
  364. }
  365. if(_4f){
  366. _39(_49,_4a,false);
  367. }
  368. }
  369. }
  370. }
  371. }
  372. };
  373. function _52(_53,ul,_54,_55){
  374. var _56=$.data(_53,"tree").options;
  375. _54=_56.loadFilter.call(_53,_54,$(ul).prev("div.tree-node")[0]);
  376. if(!_55){
  377. $(ul).empty();
  378. }
  379. var _57=[];
  380. var _58=[];
  381. var _59=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length;
  382. _5a(ul,_54,_59);
  383. if(_56.dnd){
  384. _18(_53);
  385. }else{
  386. _15(_53);
  387. }
  388. if(_57.length){
  389. _39(_53,_57[0],false);
  390. }
  391. for(var i=0;i<_58.length;i++){
  392. _39(_53,_58[i],true);
  393. }
  394. setTimeout(function(){
  395. _62(_53,_53);
  396. },0);
  397. var _5b=null;
  398. if(_53!=ul){
  399. var _5c=$(ul).prev();
  400. _5b=_14(_53,_5c[0]);
  401. }
  402. _56.onLoadSuccess.call(_53,_5b,_54);
  403. function _5a(ul,_5d,_5e){
  404. for(var i=0;i<_5d.length;i++){
  405. var li=$("<li></li>").appendTo(ul);
  406. var _5f=_5d[i];
  407. if(_5f.state!="open"&&_5f.state!="closed"){
  408. _5f.state="open";
  409. }
  410. var _60=$("<div class=\"tree-node\"></div>").appendTo(li);
  411. _60.attr("node-id",_5f.id);
  412. $.data(_60[0],"tree-node",{id:_5f.id,text:_5f.text,iconCls:_5f.iconCls,attributes:_5f.attributes});
  413. $("<span class=\"tree-title\"></span>").html(_56.formatter.call(_53,_5f)).appendTo(_60);
  414. if(_56.checkbox){
  415. if(_56.onlyLeafCheck){
  416. if(_5f.state=="open"&&(!_5f.children||!_5f.children.length)){
  417. if(_5f.checked){
  418. $("<span class=\"tree-checkbox tree-checkbox1\"></span>").prependTo(_60);
  419. }else{
  420. $("<span class=\"tree-checkbox tree-checkbox0\"></span>").prependTo(_60);
  421. }
  422. }
  423. }else{
  424. if(_5f.checked){
  425. $("<span class=\"tree-checkbox tree-checkbox1\"></span>").prependTo(_60);
  426. _58.push(_60[0]);
  427. }else{
  428. $("<span class=\"tree-checkbox tree-checkbox0\"></span>").prependTo(_60);
  429. if(_5d==_54){
  430. _57.push(_60[0]);
  431. }
  432. }
  433. }
  434. }
  435. if(_5f.children&&_5f.children.length){
  436. var _61=$("<ul></ul>").appendTo(li);
  437. if(_5f.state=="open"){
  438. $("<span class=\"tree-icon tree-folder tree-folder-open\"></span>").addClass(_5f.iconCls).prependTo(_60);
  439. $("<span class=\"tree-hit tree-expanded\"></span>").prependTo(_60);
  440. }else{
  441. $("<span class=\"tree-icon tree-folder\"></span>").addClass(_5f.iconCls).prependTo(_60);
  442. $("<span class=\"tree-hit tree-collapsed\"></span>").prependTo(_60);
  443. _61.css("display","none");
  444. }
  445. _5a(_61,_5f.children,_5e+1);
  446. }else{
  447. if(_5f.state=="closed"){
  448. $("<span class=\"tree-icon tree-folder\"></span>").addClass(_5f.iconCls).prependTo(_60);
  449. $("<span class=\"tree-hit tree-collapsed\"></span>").prependTo(_60);
  450. }else{
  451. $("<span class=\"tree-icon tree-file\"></span>").addClass(_5f.iconCls).prependTo(_60);
  452. $("<span class=\"tree-indent\"></span>").prependTo(_60);
  453. }
  454. }
  455. for(var j=0;j<_5e;j++){
  456. $("<span class=\"tree-indent\"></span>").prependTo(_60);
  457. }
  458. }
  459. };
  460. };
  461. function _62(_63,ul,_64){
  462. var _65=$.data(_63,"tree").options;
  463. if(!_65.lines){
  464. return;
  465. }
  466. if(!_64){
  467. _64=true;
  468. $(_63).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom");
  469. $(_63).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one");
  470. var _66=$(_63).tree("getRoots");
  471. if(_66.length>1){
  472. $(_66[0].target).addClass("tree-root-first");
  473. }else{
  474. if(_66.length==1){
  475. $(_66[0].target).addClass("tree-root-one");
  476. }
  477. }
  478. }
  479. $(ul).children("li").each(function(){
  480. var _67=$(this).children("div.tree-node");
  481. var ul=_67.next("ul");
  482. if(ul.length){
  483. if($(this).next().length){
  484. _68(_67);
  485. }
  486. _62(_63,ul,_64);
  487. }else{
  488. _69(_67);
  489. }
  490. });
  491. var _6a=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last");
  492. _6a.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom");
  493. function _69(_6b,_6c){
  494. var _6d=_6b.find("span.tree-icon");
  495. _6d.prev("span.tree-indent").addClass("tree-join");
  496. };
  497. function _68(_6e){
  498. var _6f=_6e.find("span.tree-indent, span.tree-hit").length;
  499. _6e.next().find("div.tree-node").each(function(){
  500. $(this).children("span:eq("+(_6f-1)+")").addClass("tree-line");
  501. });
  502. };
  503. };
  504. function _70(_71,ul,_72,_73){
  505. var _74=$.data(_71,"tree").options;
  506. _72=_72||{};
  507. var _75=null;
  508. if(_71!=ul){
  509. var _76=$(ul).prev();
  510. _75=_14(_71,_76[0]);
  511. }
  512. if(_74.onBeforeLoad.call(_71,_75,_72)==false){
  513. return;
  514. }
  515. var _77=$(ul).prev().children("span.tree-folder");
  516. _77.addClass("tree-loading");
  517. var _78=_74.loader.call(_71,_72,function(_79){
  518. _77.removeClass("tree-loading");
  519. _52(_71,ul,_79);
  520. if(_73){
  521. _73();
  522. }
  523. },function(){
  524. _77.removeClass("tree-loading");
  525. _74.onLoadError.apply(_71,arguments);
  526. if(_73){
  527. _73();
  528. }
  529. });
  530. if(_78==false){
  531. _77.removeClass("tree-loading");
  532. }
  533. };
  534. function _7a(_7b,_7c,_7d){
  535. var _7e=$.data(_7b,"tree").options;
  536. var hit=$(_7c).children("span.tree-hit");
  537. if(hit.length==0){
  538. return;
  539. }
  540. if(hit.hasClass("tree-expanded")){
  541. return;
  542. }
  543. var _7f=_14(_7b,_7c);
  544. if(_7e.onBeforeExpand.call(_7b,_7f)==false){
  545. return;
  546. }
  547. hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded");
  548. hit.next().addClass("tree-folder-open");
  549. var ul=$(_7c).next();
  550. if(ul.length){
  551. if(_7e.animate){
  552. ul.slideDown("normal",function(){
  553. _7e.onExpand.call(_7b,_7f);
  554. if(_7d){
  555. _7d();
  556. }
  557. });
  558. }else{
  559. ul.css("display","block");
  560. _7e.onExpand.call(_7b,_7f);
  561. if(_7d){
  562. _7d();
  563. }
  564. }
  565. }else{
  566. var _80=$("<ul style=\"display:none\"></ul>").insertAfter(_7c);
  567. _70(_7b,_80[0],{id:_7f.id},function(){
  568. if(_80.is(":empty")){
  569. _80.remove();
  570. }
  571. if(_7e.animate){
  572. _80.slideDown("normal",function(){
  573. _7e.onExpand.call(_7b,_7f);
  574. if(_7d){
  575. _7d();
  576. }
  577. });
  578. }else{
  579. _80.css("display","block");
  580. _7e.onExpand.call(_7b,_7f);
  581. if(_7d){
  582. _7d();
  583. }
  584. }
  585. });
  586. }
  587. };
  588. function _81(_82,_83){
  589. var _84=$.data(_82,"tree").options;
  590. var hit=$(_83).children("span.tree-hit");
  591. if(hit.length==0){
  592. return;
  593. }
  594. if(hit.hasClass("tree-collapsed")){
  595. return;
  596. }
  597. var _85=_14(_82,_83);
  598. if(_84.onBeforeCollapse.call(_82,_85)==false){
  599. return;
  600. }
  601. hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed");
  602. hit.next().removeClass("tree-folder-open");
  603. var ul=$(_83).next();
  604. if(_84.animate){
  605. ul.slideUp("normal",function(){
  606. _84.onCollapse.call(_82,_85);
  607. });
  608. }else{
  609. ul.css("display","none");
  610. _84.onCollapse.call(_82,_85);
  611. }
  612. };
  613. function _86(_87,_88){
  614. var hit=$(_88).children("span.tree-hit");
  615. if(hit.length==0){
  616. return;
  617. }
  618. if(hit.hasClass("tree-expanded")){
  619. _81(_87,_88);
  620. }else{
  621. _7a(_87,_88);
  622. }
  623. };
  624. function _89(_8a,_8b){
  625. var _8c=_51(_8a,_8b);
  626. if(_8b){
  627. _8c.unshift(_14(_8a,_8b));
  628. }
  629. for(var i=0;i<_8c.length;i++){
  630. _7a(_8a,_8c[i].target);
  631. }
  632. };
  633. function _8d(_8e,_8f){
  634. var _90=[];
  635. var p=_91(_8e,_8f);
  636. while(p){
  637. _90.unshift(p);
  638. p=_91(_8e,p.target);
  639. }
  640. for(var i=0;i<_90.length;i++){
  641. _7a(_8e,_90[i].target);
  642. }
  643. };
  644. function _92(_93,_94){
  645. var c=$(_93).parent();
  646. while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){
  647. c=c.parent();
  648. }
  649. var n=$(_94);
  650. var _95=n.offset().top;
  651. if(c[0].tagName!="BODY"){
  652. var _96=c.offset().top;
  653. if(_95<_96){
  654. c.scrollTop(c.scrollTop()+_95-_96);
  655. }else{
  656. if(_95+n.outerHeight()>_96+c.outerHeight()-18){
  657. c.scrollTop(c.scrollTop()+_95+n.outerHeight()-_96-c.outerHeight()+18);
  658. }
  659. }
  660. }else{
  661. c.scrollTop(_95);
  662. }
  663. };
  664. function _97(_98,_99){
  665. var _9a=_51(_98,_99);
  666. if(_99){
  667. _9a.unshift(_14(_98,_99));
  668. }
  669. for(var i=0;i<_9a.length;i++){
  670. _81(_98,_9a[i].target);
  671. }
  672. };
  673. function _9b(_9c){
  674. var _9d=_9e(_9c);
  675. if(_9d.length){
  676. return _9d[0];
  677. }else{
  678. return null;
  679. }
  680. };
  681. function _9e(_9f){
  682. var _a0=[];
  683. $(_9f).children("li").each(function(){
  684. var _a1=$(this).children("div.tree-node");
  685. _a0.push(_14(_9f,_a1[0]));
  686. });
  687. return _a0;
  688. };
  689. function _51(_a2,_a3){
  690. var _a4=[];
  691. if(_a3){
  692. _a5($(_a3));
  693. }else{
  694. var _a6=_9e(_a2);
  695. for(var i=0;i<_a6.length;i++){
  696. _a4.push(_a6[i]);
  697. _a5($(_a6[i].target));
  698. }
  699. }
  700. function _a5(_a7){
  701. _a7.next().find("div.tree-node").each(function(){
  702. _a4.push(_14(_a2,this));
  703. });
  704. };
  705. return _a4;
  706. };
  707. function _91(_a8,_a9){
  708. var ul=$(_a9).parent().parent();
  709. if(ul[0]==_a8){
  710. return null;
  711. }else{
  712. return _14(_a8,ul.prev()[0]);
  713. }
  714. };
  715. function _aa(_ab,_ac){
  716. _ac=_ac||"checked";
  717. if(!$.isArray(_ac)){
  718. _ac=[_ac];
  719. }
  720. var _ad=[];
  721. for(var i=0;i<_ac.length;i++){
  722. var s=_ac[i];
  723. if(s=="checked"){
  724. _ad.push("span.tree-checkbox1");
  725. }else{
  726. if(s=="unchecked"){
  727. _ad.push("span.tree-checkbox0");
  728. }else{
  729. if(s=="indeterminate"){
  730. _ad.push("span.tree-checkbox2");
  731. }
  732. }
  733. }
  734. }
  735. var _ae=[];
  736. $(_ab).find(_ad.join(",")).each(function(){
  737. var _af=$(this).parent();
  738. _ae.push(_14(_ab,_af[0]));
  739. });
  740. return _ae;
  741. };
  742. function _b0(_b1){
  743. var _b2=$(_b1).find("div.tree-node-selected");
  744. if(_b2.length){
  745. return _14(_b1,_b2[0]);
  746. }else{
  747. return null;
  748. }
  749. };
  750. function _b3(_b4,_b5){
  751. var _b6=$(_b5.parent);
  752. var _b7=_b5.data;
  753. if(!_b7){
  754. return;
  755. }
  756. _b7=$.isArray(_b7)?_b7:[_b7];
  757. if(!_b7.length){
  758. return;
  759. }
  760. var ul;
  761. if(_b6.length==0){
  762. ul=$(_b4);
  763. }else{
  764. if(_4d(_b4,_b6[0])){
  765. var _b8=_b6.find("span.tree-icon");
  766. _b8.removeClass("tree-file").addClass("tree-folder tree-folder-open");
  767. var hit=$("<span class=\"tree-hit tree-expanded\"></span>").insertBefore(_b8);
  768. if(hit.prev().length){
  769. hit.prev().remove();
  770. }
  771. }
  772. ul=_b6.next();
  773. if(!ul.length){
  774. ul=$("<ul></ul>").insertAfter(_b6);
  775. }
  776. }
  777. _52(_b4,ul[0],_b7,true);
  778. _48(_b4,ul.prev());
  779. };
  780. function _b9(_ba,_bb){
  781. var ref=_bb.before||_bb.after;
  782. var _bc=_91(_ba,ref);
  783. var _bd=_bb.data;
  784. if(!_bd){
  785. return;
  786. }
  787. _bd=$.isArray(_bd)?_bd:[_bd];
  788. if(!_bd.length){
  789. return;
  790. }
  791. _b3(_ba,{parent:(_bc?_bc.target:null),data:_bd});
  792. var li=$();
  793. var _be=_bc?$(_bc.target).next().children("li:last"):$(_ba).children("li:last");
  794. for(var i=0;i<_bd.length;i++){
  795. li=_be.add(li);
  796. _be=_be.prev();
  797. }
  798. if(_bb.before){
  799. li.insertBefore($(ref).parent());
  800. }else{
  801. li.insertAfter($(ref).parent());
  802. }
  803. };
  804. function _bf(_c0,_c1){
  805. var _c2=_91(_c0,_c1);
  806. var _c3=$(_c1);
  807. var li=_c3.parent();
  808. var ul=li.parent();
  809. li.remove();
  810. if(ul.children("li").length==0){
  811. var _c3=ul.prev();
  812. _c3.find(".tree-icon").removeClass("tree-folder").addClass("tree-file");
  813. _c3.find(".tree-hit").remove();
  814. $("<span class=\"tree-indent\"></span>").prependTo(_c3);
  815. if(ul[0]!=_c0){
  816. ul.remove();
  817. }
  818. }
  819. if(_c2){
  820. _48(_c0,_c2.target);
  821. }
  822. _62(_c0,_c0);
  823. };
  824. function _c4(_c5,_c6){
  825. function _c7(aa,ul){
  826. ul.children("li").each(function(){
  827. var _c8=$(this).children("div.tree-node");
  828. var _c9=_14(_c5,_c8[0]);
  829. var sub=$(this).children("ul");
  830. if(sub.length){
  831. _c9.children=[];
  832. _c7(_c9.children,sub);
  833. }
  834. aa.push(_c9);
  835. });
  836. };
  837. if(_c6){
  838. var _ca=_14(_c5,_c6);
  839. _ca.children=[];
  840. _c7(_ca.children,$(_c6).next());
  841. return _ca;
  842. }else{
  843. return null;
  844. }
  845. };
  846. function _cb(_cc,_cd){
  847. var _ce=$.data(_cc,"tree").options;
  848. var _cf=$(_cd.target);
  849. var _d0=_14(_cc,_cd.target);
  850. if(_d0.iconCls){
  851. _cf.find(".tree-icon").removeClass(_d0.iconCls);
  852. }
  853. var _d1=$.extend({},_d0,_cd);
  854. $.data(_cd.target,"tree-node",_d1);
  855. _cf.attr("node-id",_d1.id);
  856. _cf.find(".tree-title").html(_ce.formatter.call(_cc,_d1));
  857. if(_d1.iconCls){
  858. _cf.find(".tree-icon").addClass(_d1.iconCls);
  859. }
  860. if(_d0.checked!=_d1.checked){
  861. _39(_cc,_cd.target,_d1.checked);
  862. }
  863. };
  864. function _14(_d2,_d3){
  865. var _d4=$.extend({},$.data(_d3,"tree-node"),{target:_d3,checked:$(_d3).find(".tree-checkbox").hasClass("tree-checkbox1")});
  866. if(!_4d(_d2,_d3)){
  867. _d4.state=$(_d3).find(".tree-hit").hasClass("tree-expanded")?"open":"closed";
  868. }
  869. return _d4;
  870. };
  871. function _d5(_d6,id){
  872. var _d7=$(_d6).find("div.tree-node[node-id=\""+id+"\"]");
  873. if(_d7.length){
  874. return _14(_d6,_d7[0]);
  875. }else{
  876. return null;
  877. }
  878. };
  879. function _d8(_d9,_da){
  880. var _db=$.data(_d9,"tree").options;
  881. var _dc=_14(_d9,_da);
  882. if(_db.onBeforeSelect.call(_d9,_dc)==false){
  883. return;
  884. }
  885. $("div.tree-node-selected",_d9).removeClass("tree-node-selected");
  886. $(_da).addClass("tree-node-selected");
  887. _db.onSelect.call(_d9,_dc);
  888. };
  889. function _4d(_dd,_de){
  890. var _df=$(_de);
  891. var hit=_df.children("span.tree-hit");
  892. return hit.length==0;
  893. };
  894. function _e0(_e1,_e2){
  895. var _e3=$.data(_e1,"tree").options;
  896. var _e4=_14(_e1,_e2);
  897. if(_e3.onBeforeEdit.call(_e1,_e4)==false){
  898. return;
  899. }
  900. $(_e2).css("position","relative");
  901. var nt=$(_e2).find(".tree-title");
  902. var _e5=nt.outerWidth();
  903. nt.empty();
  904. var _e6=$("<input class=\"tree-editor\">").appendTo(nt);
  905. _e6.val(_e4.text).focus();
  906. _e6.width(_e5+20);
  907. _e6.height(document.compatMode=="CSS1Compat"?(18-(_e6.outerHeight()-_e6.height())):18);
  908. _e6.bind("click",function(e){
  909. return false;
  910. }).bind("mousedown",function(e){
  911. e.stopPropagation();
  912. }).bind("mousemove",function(e){
  913. e.stopPropagation();
  914. }).bind("keydown",function(e){
  915. if(e.keyCode==13){
  916. _e7(_e1,_e2);
  917. return false;
  918. }else{
  919. if(e.keyCode==27){
  920. _ed(_e1,_e2);
  921. return false;
  922. }
  923. }
  924. }).bind("blur",function(e){
  925. e.stopPropagation();
  926. _e7(_e1,_e2);
  927. });
  928. };
  929. function _e7(_e8,_e9){
  930. var _ea=$.data(_e8,"tree").options;
  931. $(_e9).css("position","");
  932. var _eb=$(_e9).find("input.tree-editor");
  933. var val=_eb.val();
  934. _eb.remove();
  935. var _ec=_14(_e8,_e9);
  936. _ec.text=val;
  937. _cb(_e8,_ec);
  938. _ea.onAfterEdit.call(_e8,_ec);
  939. };
  940. function _ed(_ee,_ef){
  941. var _f0=$.data(_ee,"tree").options;
  942. $(_ef).css("position","");
  943. $(_ef).find("input.tree-editor").remove();
  944. var _f1=_14(_ee,_ef);
  945. _cb(_ee,_f1);
  946. _f0.onCancelEdit.call(_ee,_f1);
  947. };
  948. $.fn.tree=function(_f2,_f3){
  949. if(typeof _f2=="string"){
  950. return $.fn.tree.methods[_f2](this,_f3);
  951. }
  952. var _f2=_f2||{};
  953. return this.each(function(){
  954. var _f4=$.data(this,"tree");
  955. var _f5;
  956. if(_f4){
  957. _f5=$.extend(_f4.options,_f2);
  958. _f4.options=_f5;
  959. }else{
  960. _f5=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f2);
  961. $.data(this,"tree",{options:_f5,tree:_1(this)});
  962. var _f6=_4(this);
  963. if(_f6.length&&!_f5.data){
  964. _f5.data=_f6;
  965. }
  966. }
  967. _c(this);
  968. if(_f5.lines){
  969. $(this).addClass("tree-lines");
  970. }
  971. if(_f5.data){
  972. _52(this,this,_f5.data);
  973. }else{
  974. if(_f5.dnd){
  975. _18(this);
  976. }else{
  977. _15(this);
  978. }
  979. }
  980. _70(this,this);
  981. });
  982. };
  983. $.fn.tree.methods={options:function(jq){
  984. return $.data(jq[0],"tree").options;
  985. },loadData:function(jq,_f7){
  986. return jq.each(function(){
  987. _52(this,this,_f7);
  988. });
  989. },getNode:function(jq,_f8){
  990. return _14(jq[0],_f8);
  991. },getData:function(jq,_f9){
  992. return _c4(jq[0],_f9);
  993. },reload:function(jq,_fa){
  994. return jq.each(function(){
  995. if(_fa){
  996. var _fb=$(_fa);
  997. var hit=_fb.children("span.tree-hit");
  998. hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed");
  999. _fb.next().remove();
  1000. _7a(this,_fa);
  1001. }else{
  1002. $(this).empty();
  1003. _70(this,this);
  1004. }
  1005. });
  1006. },getRoot:function(jq){
  1007. return _9b(jq[0]);
  1008. },getRoots:function(jq){
  1009. return _9e(jq[0]);
  1010. },getParent:function(jq,_fc){
  1011. return _91(jq[0],_fc);
  1012. },getChildren:function(jq,_fd){
  1013. return _51(jq[0],_fd);
  1014. },getChecked:function(jq,_fe){
  1015. return _aa(jq[0],_fe);
  1016. },getSelected:function(jq){
  1017. return _b0(jq[0]);
  1018. },isLeaf:function(jq,_ff){
  1019. return _4d(jq[0],_ff);
  1020. },find:function(jq,id){
  1021. return _d5(jq[0],id);
  1022. },select:function(jq,_100){
  1023. return jq.each(function(){
  1024. _d8(this,_100);
  1025. });
  1026. },check:function(jq,_101){
  1027. return jq.each(function(){
  1028. _39(this,_101,true);
  1029. });
  1030. },uncheck:function(jq,_102){
  1031. return jq.each(function(){
  1032. _39(this,_102,false);
  1033. });
  1034. },collapse:function(jq,_103){
  1035. return jq.each(function(){
  1036. _81(this,_103);
  1037. });
  1038. },expand:function(jq,_104){
  1039. return jq.each(function(){
  1040. _7a(this,_104);
  1041. });
  1042. },collapseAll:function(jq,_105){
  1043. return jq.each(function(){
  1044. _97(this,_105);
  1045. });
  1046. },expandAll:function(jq,_106){
  1047. return jq.each(function(){
  1048. _89(this,_106);
  1049. });
  1050. },expandTo:function(jq,_107){
  1051. return jq.each(function(){
  1052. _8d(this,_107);
  1053. });
  1054. },scrollTo:function(jq,_108){
  1055. return jq.each(function(){
  1056. _92(this,_108);
  1057. });
  1058. },toggle:function(jq,_109){
  1059. return jq.each(function(){
  1060. _86(this,_109);
  1061. });
  1062. },append:function(jq,_10a){
  1063. return jq.each(function(){
  1064. _b3(this,_10a);
  1065. });
  1066. },insert:function(jq,_10b){
  1067. return jq.each(function(){
  1068. _b9(this,_10b);
  1069. });
  1070. },remove:function(jq,_10c){
  1071. return jq.each(function(){
  1072. _bf(this,_10c);
  1073. });
  1074. },pop:function(jq,_10d){
  1075. var node=jq.tree("getData",_10d);
  1076. jq.tree("remove",_10d);
  1077. return node;
  1078. },update:function(jq,_10e){
  1079. return jq.each(function(){
  1080. _cb(this,_10e);
  1081. });
  1082. },enableDnd:function(jq){
  1083. return jq.each(function(){
  1084. _18(this);
  1085. });
  1086. },disableDnd:function(jq){
  1087. return jq.each(function(){
  1088. _15(this);
  1089. });
  1090. },beginEdit:function(jq,_10f){
  1091. return jq.each(function(){
  1092. _e0(this,_10f);
  1093. });
  1094. },endEdit:function(jq,_110){
  1095. return jq.each(function(){
  1096. _e7(this,_110);
  1097. });
  1098. },cancelEdit:function(jq,_111){
  1099. return jq.each(function(){
  1100. _ed(this,_111);
  1101. });
  1102. }};
  1103. $.fn.tree.parseOptions=function(_112){
  1104. var t=$(_112);
  1105. return $.extend({},$.parser.parseOptions(_112,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}]));
  1106. };
  1107. $.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){
  1108. return node.text;
  1109. },loader:function(_113,_114,_115){
  1110. var opts=$(this).tree("options");
  1111. if(!opts.url){
  1112. return false;
  1113. }
  1114. $.ajax({type:opts.method,url:opts.url,data:_113,dataType:"json",success:function(data){
  1115. _114(data);
  1116. },error:function(){
  1117. _115.apply(this,arguments);
  1118. }});
  1119. },loadFilter:function(data,_116){
  1120. return data;
  1121. },onBeforeLoad:function(node,_117){
  1122. },onLoadSuccess:function(node,data){
  1123. },onLoadError:function(){
  1124. },onClick:function(node){
  1125. },onDblClick:function(node){
  1126. },onBeforeExpand:function(node){
  1127. },onExpand:function(node){
  1128. },onBeforeCollapse:function(node){
  1129. },onCollapse:function(node){
  1130. },onBeforeCheck:function(node,_118){
  1131. },onCheck:function(node,_119){
  1132. },onBeforeSelect:function(node){
  1133. },onSelect:function(node){
  1134. },onContextMenu:function(e,node){
  1135. },onBeforeDrag:function(node){
  1136. },onStartDrag:function(node){
  1137. },onStopDrag:function(node){
  1138. },onDragEnter:function(_11a,_11b){
  1139. },onDragOver:function(_11c,_11d){
  1140. },onDragLeave:function(_11e,_11f){
  1141. },onBeforeDrop:function(_120,_121,_122){
  1142. },onDrop:function(_123,_124,_125){
  1143. },onBeforeEdit:function(node){
  1144. },onAfterEdit:function(node){
  1145. },onCancelEdit:function(node){
  1146. }};
  1147. })(jQuery);