jquery.combotree.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. /**
  2. * EasyUI for jQuery 1.9.4
  3. *
  4. * Copyright (c) 2009-2020 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,"combotree");
  13. var _4=_3.options;
  14. var _5=_3.tree;
  15. $(_2).addClass("combotree-f");
  16. $(_2).combo($.extend({},_4,{onShowPanel:function(){
  17. if(_4.editable){
  18. _5.tree("doFilter","");
  19. }
  20. _4.onShowPanel.call(this);
  21. }}));
  22. var _6=$(_2).combo("panel");
  23. if(!_5){
  24. _5=$("<ul></ul>").appendTo(_6);
  25. _3.tree=_5;
  26. }
  27. _5.tree($.extend({},_4,{checkbox:_4.multiple,onLoadSuccess:function(_7,_8){
  28. var _9=$(_2).combotree("getValues");
  29. if(_4.multiple){
  30. $.map(_5.tree("getChecked"),function(_a){
  31. $.easyui.addArrayItem(_9,_a.id);
  32. });
  33. }
  34. _15(_2,_9,_3.remainText);
  35. _4.onLoadSuccess.call(this,_7,_8);
  36. },onClick:function(_b){
  37. if(_4.multiple){
  38. $(this).tree(_b.checked?"uncheck":"check",_b.target);
  39. }else{
  40. $(_2).combo("hidePanel");
  41. }
  42. _3.remainText=false;
  43. _e(_2);
  44. _4.onClick.call(this,_b);
  45. },onCheck:function(_c,_d){
  46. _3.remainText=false;
  47. _e(_2);
  48. _4.onCheck.call(this,_c,_d);
  49. }}));
  50. };
  51. function _e(_f){
  52. var _10=$.data(_f,"combotree");
  53. var _11=_10.options;
  54. var _12=_10.tree;
  55. var vv=[];
  56. if(_11.multiple){
  57. vv=$.map(_12.tree("getChecked"),function(_13){
  58. return _13.id;
  59. });
  60. }else{
  61. var _14=_12.tree("getSelected");
  62. if(_14){
  63. vv.push(_14.id);
  64. }
  65. }
  66. vv=vv.concat(_11.unselectedValues);
  67. _15(_f,vv,_10.remainText);
  68. };
  69. function _15(_16,_17,_18){
  70. var _19=$.data(_16,"combotree");
  71. var _1a=_19.options;
  72. var _1b=_19.tree;
  73. var _1c=_1b.tree("options");
  74. var _1d=_1c.onBeforeCheck;
  75. var _1e=_1c.onCheck;
  76. var _1f=_1c.onBeforeSelect;
  77. var _20=_1c.onSelect;
  78. _1c.onBeforeCheck=_1c.onCheck=_1c.onBeforeSelect=_1c.onSelect=function(){
  79. };
  80. if(!$.isArray(_17)){
  81. _17=_17.split(_1a.separator);
  82. }
  83. if(!_1a.multiple){
  84. _17=_17.length?[_17[0]]:[""];
  85. }
  86. var vv=$.map(_17,function(_21){
  87. return String(_21);
  88. });
  89. _1b.find("div.tree-node-selected").removeClass("tree-node-selected");
  90. $.map(_1b.tree("getChecked"),function(_22){
  91. if($.inArray(String(_22.id),vv)==-1){
  92. _1b.tree("uncheck",_22.target);
  93. }
  94. });
  95. var ss=[];
  96. _1a.unselectedValues=[];
  97. $.map(vv,function(v){
  98. var _23=_1b.tree("find",v);
  99. if(_23){
  100. _1b.tree("check",_23.target).tree("select",_23.target);
  101. ss.push(_24(_23));
  102. }else{
  103. ss.push(_25(v,_1a.mappingRows)||v);
  104. _1a.unselectedValues.push(v);
  105. }
  106. });
  107. if(_1a.multiple){
  108. $.map(_1b.tree("getChecked"),function(_26){
  109. var id=String(_26.id);
  110. if($.inArray(id,vv)==-1){
  111. vv.push(id);
  112. ss.push(_24(_26));
  113. }
  114. });
  115. }
  116. _1c.onBeforeCheck=_1d;
  117. _1c.onCheck=_1e;
  118. _1c.onBeforeSelect=_1f;
  119. _1c.onSelect=_20;
  120. if(!_18){
  121. var s=ss.join(_1a.separator);
  122. if($(_16).combo("getText")!=s){
  123. $(_16).combo("setText",s);
  124. }
  125. }
  126. $(_16).combo("setValues",vv);
  127. function _25(_27,a){
  128. var _28=$.easyui.getArrayItem(a,"id",_27);
  129. return _28?_24(_28):undefined;
  130. };
  131. function _24(_29){
  132. return _29[_1a.textField||""]||_29.text;
  133. };
  134. };
  135. function _2a(_2b,q){
  136. var _2c=$.data(_2b,"combotree");
  137. var _2d=_2c.options;
  138. var _2e=_2c.tree;
  139. _2c.remainText=true;
  140. _2e.tree("doFilter",_2d.multiple?q.split(_2d.separator):q);
  141. };
  142. function _2f(_30){
  143. var _31=$.data(_30,"combotree");
  144. _31.remainText=false;
  145. $(_30).combotree("setValues",$(_30).combotree("getValues"));
  146. $(_30).combotree("hidePanel");
  147. };
  148. $.fn.combotree=function(_32,_33){
  149. if(typeof _32=="string"){
  150. var _34=$.fn.combotree.methods[_32];
  151. if(_34){
  152. return _34(this,_33);
  153. }else{
  154. return this.combo(_32,_33);
  155. }
  156. }
  157. _32=_32||{};
  158. return this.each(function(){
  159. var _35=$.data(this,"combotree");
  160. if(_35){
  161. $.extend(_35.options,_32);
  162. }else{
  163. $.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_32)});
  164. }
  165. _1(this);
  166. });
  167. };
  168. $.fn.combotree.methods={options:function(jq){
  169. var _36=jq.combo("options");
  170. return $.extend($.data(jq[0],"combotree").options,{width:_36.width,height:_36.height,originalValue:_36.originalValue,disabled:_36.disabled,readonly:_36.readonly});
  171. },clone:function(jq,_37){
  172. var t=jq.combo("clone",_37);
  173. t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")});
  174. return t;
  175. },tree:function(jq){
  176. return $.data(jq[0],"combotree").tree;
  177. },loadData:function(jq,_38){
  178. return jq.each(function(){
  179. var _39=$.data(this,"combotree").options;
  180. _39.data=_38;
  181. var _3a=$.data(this,"combotree").tree;
  182. _3a.tree("loadData",_38);
  183. });
  184. },reload:function(jq,url){
  185. return jq.each(function(){
  186. var _3b=$.data(this,"combotree").options;
  187. var _3c=$.data(this,"combotree").tree;
  188. if(url){
  189. _3b.url=url;
  190. }
  191. _3c.tree({url:_3b.url});
  192. });
  193. },setValues:function(jq,_3d){
  194. return jq.each(function(){
  195. var _3e=$(this).combotree("options");
  196. if($.isArray(_3d)){
  197. _3d=$.map(_3d,function(_3f){
  198. if(_3f&&typeof _3f=="object"){
  199. $.easyui.addArrayItem(_3e.mappingRows,"id",_3f);
  200. return _3f.id;
  201. }else{
  202. return _3f;
  203. }
  204. });
  205. }
  206. _15(this,_3d);
  207. });
  208. },setValue:function(jq,_40){
  209. return jq.each(function(){
  210. $(this).combotree("setValues",$.isArray(_40)?_40:[_40]);
  211. });
  212. },clear:function(jq){
  213. return jq.each(function(){
  214. $(this).combotree("setValues",[]);
  215. });
  216. },reset:function(jq){
  217. return jq.each(function(){
  218. var _41=$(this).combotree("options");
  219. if(_41.multiple){
  220. $(this).combotree("setValues",_41.originalValue);
  221. }else{
  222. $(this).combotree("setValue",_41.originalValue);
  223. }
  224. });
  225. }};
  226. $.fn.combotree.parseOptions=function(_42){
  227. return $.extend({},$.fn.combo.parseOptions(_42),$.fn.tree.parseOptions(_42));
  228. };
  229. $.fn.combotree.defaults=$.extend({},$.fn.combo.defaults,$.fn.tree.defaults,{editable:false,textField:null,unselectedValues:[],mappingRows:[],keyHandler:{up:function(e){
  230. },down:function(e){
  231. },left:function(e){
  232. },right:function(e){
  233. },enter:function(e){
  234. _2f(this);
  235. },query:function(q,e){
  236. _2a(this,q);
  237. }}});
  238. })(jQuery);