jquery.combotree.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /**
  2. * EasyUI for jQuery 1.6.10
  3. *
  4. * Copyright (c) 2009-2018 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.onSelect;
  77. _1c.onBeforeCheck=_1c.onCheck=_1c.onSelect=function(){
  78. };
  79. if(!$.isArray(_17)){
  80. _17=_17.split(_1a.separator);
  81. }
  82. if(!_1a.multiple){
  83. _17=_17.length?[_17[0]]:[""];
  84. }
  85. var vv=$.map(_17,function(_20){
  86. return String(_20);
  87. });
  88. _1b.find("div.tree-node-selected").removeClass("tree-node-selected");
  89. $.map(_1b.tree("getChecked"),function(_21){
  90. if($.inArray(String(_21.id),vv)==-1){
  91. _1b.tree("uncheck",_21.target);
  92. }
  93. });
  94. var ss=[];
  95. _1a.unselectedValues=[];
  96. $.map(vv,function(v){
  97. var _22=_1b.tree("find",v);
  98. if(_22){
  99. _1b.tree("check",_22.target).tree("select",_22.target);
  100. ss.push(_23(_22));
  101. }else{
  102. ss.push(_24(v,_1a.mappingRows)||v);
  103. _1a.unselectedValues.push(v);
  104. }
  105. });
  106. if(_1a.multiple){
  107. $.map(_1b.tree("getChecked"),function(_25){
  108. var id=String(_25.id);
  109. if($.inArray(id,vv)==-1){
  110. vv.push(id);
  111. ss.push(_23(_25));
  112. }
  113. });
  114. }
  115. _1c.onBeforeCheck=_1d;
  116. _1c.onCheck=_1e;
  117. _1c.onSelect=_1f;
  118. if(!_18){
  119. var s=ss.join(_1a.separator);
  120. if($(_16).combo("getText")!=s){
  121. $(_16).combo("setText",s);
  122. }
  123. }
  124. $(_16).combo("setValues",vv);
  125. function _24(_26,a){
  126. var _27=$.easyui.getArrayItem(a,"id",_26);
  127. return _27?_23(_27):undefined;
  128. };
  129. function _23(_28){
  130. return _28[_1a.textField||""]||_28.text;
  131. };
  132. };
  133. function _29(_2a,q){
  134. var _2b=$.data(_2a,"combotree");
  135. var _2c=_2b.options;
  136. var _2d=_2b.tree;
  137. _2b.remainText=true;
  138. _2d.tree("doFilter",_2c.multiple?q.split(_2c.separator):q);
  139. };
  140. function _2e(_2f){
  141. var _30=$.data(_2f,"combotree");
  142. _30.remainText=false;
  143. $(_2f).combotree("setValues",$(_2f).combotree("getValues"));
  144. $(_2f).combotree("hidePanel");
  145. };
  146. $.fn.combotree=function(_31,_32){
  147. if(typeof _31=="string"){
  148. var _33=$.fn.combotree.methods[_31];
  149. if(_33){
  150. return _33(this,_32);
  151. }else{
  152. return this.combo(_31,_32);
  153. }
  154. }
  155. _31=_31||{};
  156. return this.each(function(){
  157. var _34=$.data(this,"combotree");
  158. if(_34){
  159. $.extend(_34.options,_31);
  160. }else{
  161. $.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_31)});
  162. }
  163. _1(this);
  164. });
  165. };
  166. $.fn.combotree.methods={options:function(jq){
  167. var _35=jq.combo("options");
  168. return $.extend($.data(jq[0],"combotree").options,{width:_35.width,height:_35.height,originalValue:_35.originalValue,disabled:_35.disabled,readonly:_35.readonly});
  169. },clone:function(jq,_36){
  170. var t=jq.combo("clone",_36);
  171. t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")});
  172. return t;
  173. },tree:function(jq){
  174. return $.data(jq[0],"combotree").tree;
  175. },loadData:function(jq,_37){
  176. return jq.each(function(){
  177. var _38=$.data(this,"combotree").options;
  178. _38.data=_37;
  179. var _39=$.data(this,"combotree").tree;
  180. _39.tree("loadData",_37);
  181. });
  182. },reload:function(jq,url){
  183. return jq.each(function(){
  184. var _3a=$.data(this,"combotree").options;
  185. var _3b=$.data(this,"combotree").tree;
  186. if(url){
  187. _3a.url=url;
  188. }
  189. _3b.tree({url:_3a.url});
  190. });
  191. },setValues:function(jq,_3c){
  192. return jq.each(function(){
  193. var _3d=$(this).combotree("options");
  194. if($.isArray(_3c)){
  195. _3c=$.map(_3c,function(_3e){
  196. if(_3e&&typeof _3e=="object"){
  197. $.easyui.addArrayItem(_3d.mappingRows,"id",_3e);
  198. return _3e.id;
  199. }else{
  200. return _3e;
  201. }
  202. });
  203. }
  204. _15(this,_3c);
  205. });
  206. },setValue:function(jq,_3f){
  207. return jq.each(function(){
  208. $(this).combotree("setValues",$.isArray(_3f)?_3f:[_3f]);
  209. });
  210. },clear:function(jq){
  211. return jq.each(function(){
  212. $(this).combotree("setValues",[]);
  213. });
  214. },reset:function(jq){
  215. return jq.each(function(){
  216. var _40=$(this).combotree("options");
  217. if(_40.multiple){
  218. $(this).combotree("setValues",_40.originalValue);
  219. }else{
  220. $(this).combotree("setValue",_40.originalValue);
  221. }
  222. });
  223. }};
  224. $.fn.combotree.parseOptions=function(_41){
  225. return $.extend({},$.fn.combo.parseOptions(_41),$.fn.tree.parseOptions(_41));
  226. };
  227. $.fn.combotree.defaults=$.extend({},$.fn.combo.defaults,$.fn.tree.defaults,{editable:false,textField:null,unselectedValues:[],mappingRows:[],keyHandler:{up:function(e){
  228. },down:function(e){
  229. },left:function(e){
  230. },right:function(e){
  231. },enter:function(e){
  232. _2e(this);
  233. },query:function(q,e){
  234. _29(this,q);
  235. }}});
  236. })(jQuery);