jquery.treegrid.js 27 KB

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