jquery.combotreegrid.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. /**
  2. * jQuery EasyUI 1.5.2
  3. *
  4. * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. var _3=$.data(_2,"combotreegrid");
  13. var _4=_3.options;
  14. $(_2).addClass("combotreegrid-f").combo($.extend({},_4,{onShowPanel:function(){
  15. var p=$(this).combotreegrid("panel");
  16. var _5=p.outerHeight()-p.height();
  17. var _6=p._size("minHeight");
  18. var _7=p._size("maxHeight");
  19. var dg=$(this).combotreegrid("grid");
  20. dg.treegrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_6?_6-_5:""),maxHeight:(_7?_7-_5:"")});
  21. var _8=dg.treegrid("getSelected");
  22. if(_8){
  23. dg.treegrid("scrollTo",_8[_4.idField]);
  24. }
  25. _4.onShowPanel.call(this);
  26. }}));
  27. if(!_3.grid){
  28. var _9=$(_2).combo("panel");
  29. _3.grid=$("<table></table>").appendTo(_9);
  30. }
  31. _3.grid.treegrid($.extend({},_4,{border:false,checkbox:_4.multiple,onLoadSuccess:function(_a,_b){
  32. var _c=$(_2).combotreegrid("getValues");
  33. if(_4.multiple){
  34. $.map($(this).treegrid("getCheckedNodes"),function(_d){
  35. $.easyui.addArrayItem(_c,_d[_4.idField]);
  36. });
  37. }
  38. _16(_2,_c);
  39. _4.onLoadSuccess.call(this,_a,_b);
  40. _3.remainText=false;
  41. },onClickRow:function(_e){
  42. if(_4.multiple){
  43. $(this).treegrid(_e.checked?"uncheckNode":"checkNode",_e[_4.idField]);
  44. $(this).treegrid("unselect",_e[_4.idField]);
  45. }else{
  46. $(_2).combo("hidePanel");
  47. }
  48. _11(_2);
  49. _4.onClickRow.call(this,_e);
  50. },onCheckNode:function(_f,_10){
  51. _11(_2);
  52. _4.onCheckNode.call(this,_f,_10);
  53. }}));
  54. };
  55. function _11(_12){
  56. var _13=$.data(_12,"combotreegrid");
  57. var _14=_13.options;
  58. var _15=_13.grid;
  59. var vv=[];
  60. if(_14.multiple){
  61. vv=$.map(_15.treegrid("getCheckedNodes"),function(row){
  62. return row[_14.idField];
  63. });
  64. }else{
  65. var row=_15.treegrid("getSelected");
  66. if(row){
  67. vv.push(row[_14.idField]);
  68. }
  69. }
  70. vv=vv.concat(_14.unselectedValues);
  71. _16(_12,vv);
  72. };
  73. function _16(_17,_18){
  74. var _19=$.data(_17,"combotreegrid");
  75. var _1a=_19.options;
  76. var _1b=_19.grid;
  77. if(!$.isArray(_18)){
  78. _18=_18.split(_1a.separator);
  79. }
  80. if(!_1a.multiple){
  81. _18=_18.length?[_18[0]]:[""];
  82. }
  83. var vv=$.map(_18,function(_1c){
  84. return String(_1c);
  85. });
  86. vv=$.grep(vv,function(v,_1d){
  87. return _1d===$.inArray(v,vv);
  88. });
  89. var _1e=_1b.treegrid("getSelected");
  90. if(_1e){
  91. _1b.treegrid("unselect",_1e[_1a.idField]);
  92. }
  93. $.map(_1b.treegrid("getCheckedNodes"),function(row){
  94. if($.inArray(String(row[_1a.idField]),vv)==-1){
  95. _1b.treegrid("uncheckNode",row[_1a.idField]);
  96. }
  97. });
  98. var ss=[];
  99. _1a.unselectedValues=[];
  100. $.map(vv,function(v){
  101. var row=_1b.treegrid("find",v);
  102. if(row){
  103. if(_1a.multiple){
  104. _1b.treegrid("checkNode",v);
  105. }else{
  106. _1b.treegrid("select",v);
  107. }
  108. ss.push(_1f(row));
  109. }else{
  110. ss.push(_20(v,_1a.mappingRows)||v);
  111. _1a.unselectedValues.push(v);
  112. }
  113. });
  114. if(_1a.multiple){
  115. $.map(_1b.treegrid("getCheckedNodes"),function(row){
  116. var id=String(row[_1a.idField]);
  117. if($.inArray(id,vv)==-1){
  118. vv.push(id);
  119. ss.push(_1f(row));
  120. }
  121. });
  122. }
  123. if(!_19.remainText){
  124. var s=ss.join(_1a.separator);
  125. if($(_17).combo("getText")!=s){
  126. $(_17).combo("setText",s);
  127. }
  128. }
  129. $(_17).combo("setValues",vv);
  130. function _20(_21,a){
  131. var _22=$.easyui.getArrayItem(a,_1a.idField,_21);
  132. return _22?_1f(_22):undefined;
  133. };
  134. function _1f(row){
  135. return row[_1a.textField||""]||row[_1a.treeField];
  136. };
  137. };
  138. function _23(_24,q){
  139. var _25=$.data(_24,"combotreegrid");
  140. var _26=_25.options;
  141. var _27=_25.grid;
  142. _25.remainText=true;
  143. _27.treegrid("clearSelections").treegrid("clearChecked").treegrid("highlightRow",-1);
  144. if(_26.mode=="remote"){
  145. $(_24).combotreegrid("clear");
  146. _27.treegrid("load",$.extend({},_26.queryParams,{q:q}));
  147. }else{
  148. if(q){
  149. var _28=_27.treegrid("getData");
  150. var vv=[];
  151. var qq=_26.multiple?q.split(_26.separator):[q];
  152. $.map(qq,function(q){
  153. q=$.trim(q);
  154. if(q){
  155. var v=undefined;
  156. $.easyui.forEach(_28,true,function(row){
  157. if(q.toLowerCase()==String(row[_26.treeField]).toLowerCase()){
  158. v=row[_26.idField];
  159. return false;
  160. }else{
  161. if(_26.filter.call(_24,q,row)){
  162. _27.treegrid("expandTo",row[_26.idField]);
  163. _27.treegrid("highlightRow",row[_26.idField]);
  164. return false;
  165. }
  166. }
  167. });
  168. if(v==undefined){
  169. $.easyui.forEach(_26.mappingRows,false,function(row){
  170. if(q.toLowerCase()==String(row[_26.treeField])){
  171. v=row[_26.idField];
  172. return false;
  173. }
  174. });
  175. }
  176. if(v!=undefined){
  177. vv.push(v);
  178. }
  179. }
  180. });
  181. _16(_24,vv);
  182. _25.remainText=false;
  183. }
  184. }
  185. };
  186. function _29(_2a){
  187. _11(_2a);
  188. };
  189. $.fn.combotreegrid=function(_2b,_2c){
  190. if(typeof _2b=="string"){
  191. var _2d=$.fn.combotreegrid.methods[_2b];
  192. if(_2d){
  193. return _2d(this,_2c);
  194. }else{
  195. return this.combo(_2b,_2c);
  196. }
  197. }
  198. _2b=_2b||{};
  199. return this.each(function(){
  200. var _2e=$.data(this,"combotreegrid");
  201. if(_2e){
  202. $.extend(_2e.options,_2b);
  203. }else{
  204. _2e=$.data(this,"combotreegrid",{options:$.extend({},$.fn.combotreegrid.defaults,$.fn.combotreegrid.parseOptions(this),_2b)});
  205. }
  206. _1(this);
  207. });
  208. };
  209. $.fn.combotreegrid.methods={options:function(jq){
  210. var _2f=jq.combo("options");
  211. return $.extend($.data(jq[0],"combotreegrid").options,{width:_2f.width,height:_2f.height,originalValue:_2f.originalValue,disabled:_2f.disabled,readonly:_2f.readonly});
  212. },grid:function(jq){
  213. return $.data(jq[0],"combotreegrid").grid;
  214. },setValues:function(jq,_30){
  215. return jq.each(function(){
  216. var _31=$(this).combotreegrid("options");
  217. if($.isArray(_30)){
  218. _30=$.map(_30,function(_32){
  219. if(_32&&typeof _32=="object"){
  220. $.easyui.addArrayItem(_31.mappingRows,_31.idField,_32);
  221. return _32[_31.idField];
  222. }else{
  223. return _32;
  224. }
  225. });
  226. }
  227. _16(this,_30);
  228. });
  229. },setValue:function(jq,_33){
  230. return jq.each(function(){
  231. $(this).combotreegrid("setValues",$.isArray(_33)?_33:[_33]);
  232. });
  233. },clear:function(jq){
  234. return jq.each(function(){
  235. $(this).combotreegrid("setValues",[]);
  236. });
  237. },reset:function(jq){
  238. return jq.each(function(){
  239. var _34=$(this).combotreegrid("options");
  240. if(_34.multiple){
  241. $(this).combotreegrid("setValues",_34.originalValue);
  242. }else{
  243. $(this).combotreegrid("setValue",_34.originalValue);
  244. }
  245. });
  246. }};
  247. $.fn.combotreegrid.parseOptions=function(_35){
  248. var t=$(_35);
  249. return $.extend({},$.fn.combo.parseOptions(_35),$.fn.treegrid.parseOptions(_35),$.parser.parseOptions(_35,["mode",{limitToGrid:"boolean"}]));
  250. };
  251. $.fn.combotreegrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.treegrid.defaults,{editable:false,singleSelect:true,limitToGrid:false,unselectedValues:[],mappingRows:[],mode:"local",textField:null,keyHandler:{up:function(e){
  252. },down:function(e){
  253. },left:function(e){
  254. },right:function(e){
  255. },enter:function(e){
  256. _29(this);
  257. },query:function(q,e){
  258. _23(this,q);
  259. }},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){
  260. var _36=e.data.target;
  261. var _37=$(_36).combotreegrid("options");
  262. if(_37.limitToGrid){
  263. _29(_36);
  264. }
  265. }}),filter:function(q,row){
  266. var _38=$(this).combotreegrid("options");
  267. return (row[_38.treeField]||"").toLowerCase().indexOf(q.toLowerCase())>=0;
  268. }});
  269. })(jQuery);