jquery.combotree.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 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(_4);
  17. var _6=$(_2).combo("panel");
  18. if(!_5){
  19. _5=$("<ul></ul>").appendTo(_6);
  20. $.data(_2,"combotree").tree=_5;
  21. }
  22. _5.tree($.extend({},_4,{checkbox:_4.multiple,onLoadSuccess:function(_7,_8){
  23. var _9=$(_2).combotree("getValues");
  24. if(_4.multiple){
  25. var _a=_5.tree("getChecked");
  26. for(var i=0;i<_a.length;i++){
  27. var id=_a[i].id;
  28. (function(){
  29. for(var i=0;i<_9.length;i++){
  30. if(id==_9[i]){
  31. return;
  32. }
  33. }
  34. _9.push(id);
  35. })();
  36. }
  37. }
  38. $(_2).combotree("setValues",_9);
  39. _4.onLoadSuccess.call(this,_7,_8);
  40. },onClick:function(_b){
  41. if(_4.multiple){
  42. $(this).tree(_b.checked?"uncheck":"check",_b.target);
  43. }else{
  44. $(_2).combo("hidePanel");
  45. }
  46. _e(_2);
  47. _4.onClick.call(this,_b);
  48. },onCheck:function(_c,_d){
  49. _e(_2);
  50. _4.onCheck.call(this,_c,_d);
  51. }}));
  52. };
  53. function _e(_f){
  54. var _10=$.data(_f,"combotree");
  55. var _11=_10.options;
  56. var _12=_10.tree;
  57. var vv=[],ss=[];
  58. if(_11.multiple){
  59. var _13=_12.tree("getChecked");
  60. for(var i=0;i<_13.length;i++){
  61. vv.push(_13[i].id);
  62. ss.push(_13[i].text);
  63. }
  64. }else{
  65. var _14=_12.tree("getSelected");
  66. if(_14){
  67. vv.push(_14.id);
  68. ss.push(_14.text);
  69. }
  70. }
  71. $(_f).combo("setText",ss.join(_11.separator)).combo("setValues",_11.multiple?vv:(vv.length?vv:[""]));
  72. };
  73. function _15(_16,_17){
  74. var _18=$.data(_16,"combotree");
  75. var _19=_18.options;
  76. var _1a=_18.tree;
  77. var _1b=_1a.tree("options");
  78. var _1c=_1b.onCheck;
  79. var _1d=_1b.onSelect;
  80. _1b.onCheck=_1b.onSelect=function(){
  81. };
  82. _1a.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2");
  83. if(!$.isArray(_17)){
  84. _17=_17.split(_19.separator);
  85. }
  86. var vv=$.map(_17,function(_1e){
  87. return String(_1e);
  88. });
  89. var ss=[];
  90. $.map(vv,function(v){
  91. var _1f=_1a.tree("find",v);
  92. if(_1f){
  93. _1a.tree("check",_1f.target).tree("select",_1f.target);
  94. ss.push(_1f.text);
  95. }else{
  96. ss.push(v);
  97. }
  98. });
  99. if(_19.multiple){
  100. var _20=_1a.tree("getChecked");
  101. $.map(_20,function(_21){
  102. var id=String(_21.id);
  103. if($.inArray(id,vv)==-1){
  104. vv.push(id);
  105. ss.push(_21.text);
  106. }
  107. });
  108. }
  109. _1b.onCheck=_1c;
  110. _1b.onSelect=_1d;
  111. $(_16).combo("setText",ss.join(_19.separator)).combo("setValues",_19.multiple?vv:(vv.length?vv:[""]));
  112. };
  113. $.fn.combotree=function(_22,_23){
  114. if(typeof _22=="string"){
  115. var _24=$.fn.combotree.methods[_22];
  116. if(_24){
  117. return _24(this,_23);
  118. }else{
  119. return this.combo(_22,_23);
  120. }
  121. }
  122. _22=_22||{};
  123. return this.each(function(){
  124. var _25=$.data(this,"combotree");
  125. if(_25){
  126. $.extend(_25.options,_22);
  127. }else{
  128. $.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_22)});
  129. }
  130. _1(this);
  131. });
  132. };
  133. $.fn.combotree.methods={options:function(jq){
  134. var _26=jq.combo("options");
  135. return $.extend($.data(jq[0],"combotree").options,{width:_26.width,height:_26.height,originalValue:_26.originalValue,disabled:_26.disabled,readonly:_26.readonly});
  136. },clone:function(jq,_27){
  137. var t=jq.combo("clone",_27);
  138. t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")});
  139. return t;
  140. },tree:function(jq){
  141. return $.data(jq[0],"combotree").tree;
  142. },loadData:function(jq,_28){
  143. return jq.each(function(){
  144. var _29=$.data(this,"combotree").options;
  145. _29.data=_28;
  146. var _2a=$.data(this,"combotree").tree;
  147. _2a.tree("loadData",_28);
  148. });
  149. },reload:function(jq,url){
  150. return jq.each(function(){
  151. var _2b=$.data(this,"combotree").options;
  152. var _2c=$.data(this,"combotree").tree;
  153. if(url){
  154. _2b.url=url;
  155. }
  156. _2c.tree({url:_2b.url});
  157. });
  158. },setValues:function(jq,_2d){
  159. return jq.each(function(){
  160. _15(this,_2d);
  161. });
  162. },setValue:function(jq,_2e){
  163. return jq.each(function(){
  164. _15(this,[_2e]);
  165. });
  166. },clear:function(jq){
  167. return jq.each(function(){
  168. var _2f=$.data(this,"combotree").tree;
  169. _2f.find("div.tree-node-selected").removeClass("tree-node-selected");
  170. var cc=_2f.tree("getChecked");
  171. for(var i=0;i<cc.length;i++){
  172. _2f.tree("uncheck",cc[i].target);
  173. }
  174. $(this).combo("clear");
  175. });
  176. },reset:function(jq){
  177. return jq.each(function(){
  178. var _30=$(this).combotree("options");
  179. if(_30.multiple){
  180. $(this).combotree("setValues",_30.originalValue);
  181. }else{
  182. $(this).combotree("setValue",_30.originalValue);
  183. }
  184. });
  185. }};
  186. $.fn.combotree.parseOptions=function(_31){
  187. return $.extend({},$.fn.combo.parseOptions(_31),$.fn.tree.parseOptions(_31));
  188. };
  189. $.fn.combotree.defaults=$.extend({},$.fn.combo.defaults,$.fn.tree.defaults,{editable:false});
  190. })(jQuery);