旭捷内部项目管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
6.5 KiB

10 months ago
  1. /**
  2. * jQuery EasyUI 1.5.1
  3. *
  4. * Copyright (c) 2009-2016 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(row[_1a.treeField]);
  109. }else{
  110. ss.push(_1f(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(row[_1a.treeField]);
  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 _1f(_20,a){
  131. var _21=$.easyui.getArrayItem(a,_1a.idField,_20);
  132. return _21?_21[_1a.treeField]:undefined;
  133. };
  134. };
  135. function _22(_23,q){
  136. var _24=$.data(_23,"combotreegrid");
  137. var _25=_24.options;
  138. var _26=_24.grid;
  139. _24.remainText=true;
  140. _26.treegrid("clearSelections").treegrid("clearChecked").treegrid("highlightRow",-1);
  141. if(_25.mode=="remote"){
  142. $(_23).combotreegrid("clear");
  143. _26.treegrid("load",$.extend({},_25.queryParams,{q:q}));
  144. }else{
  145. if(q){
  146. var _27=_26.treegrid("getData");
  147. var vv=[];
  148. var qq=_25.multiple?q.split(_25.separator):[q];
  149. $.map(qq,function(q){
  150. q=$.trim(q);
  151. if(q){
  152. var v=undefined;
  153. $.easyui.forEach(_27,true,function(row){
  154. if(q.toLowerCase()==String(row[_25.treeField]).toLowerCase()){
  155. v=row[_25.idField];
  156. return false;
  157. }else{
  158. if(_25.filter.call(_23,q,row)){
  159. _26.treegrid("expandTo",row[_25.idField]);
  160. _26.treegrid("highlightRow",row[_25.idField]);
  161. return false;
  162. }
  163. }
  164. });
  165. if(v==undefined){
  166. $.easyui.forEach(_25.mappingRows,false,function(row){
  167. if(q.toLowerCase()==String(row[_25.treeField])){
  168. v=row[_25.idField];
  169. return false;
  170. }
  171. });
  172. }
  173. if(v!=undefined){
  174. vv.push(v);
  175. }
  176. }
  177. });
  178. _16(_23,vv);
  179. _24.remainText=false;
  180. }
  181. }
  182. };
  183. function _28(_29){
  184. _11(_29);
  185. };
  186. $.fn.combotreegrid=function(_2a,_2b){
  187. if(typeof _2a=="string"){
  188. var _2c=$.fn.combotreegrid.methods[_2a];
  189. if(_2c){
  190. return _2c(this,_2b);
  191. }else{
  192. return this.combo(_2a,_2b);
  193. }
  194. }
  195. _2a=_2a||{};
  196. return this.each(function(){
  197. var _2d=$.data(this,"combotreegrid");
  198. if(_2d){
  199. $.extend(_2d.options,_2a);
  200. }else{
  201. _2d=$.data(this,"combotreegrid",{options:$.extend({},$.fn.combotreegrid.defaults,$.fn.combotreegrid.parseOptions(this),_2a)});
  202. }
  203. _1(this);
  204. });
  205. };
  206. $.fn.combotreegrid.methods={options:function(jq){
  207. var _2e=jq.combo("options");
  208. return $.extend($.data(jq[0],"combotreegrid").options,{width:_2e.width,height:_2e.height,originalValue:_2e.originalValue,disabled:_2e.disabled,readonly:_2e.readonly});
  209. },grid:function(jq){
  210. return $.data(jq[0],"combotreegrid").grid;
  211. },setValues:function(jq,_2f){
  212. return jq.each(function(){
  213. var _30=$(this).combotreegrid("options");
  214. if($.isArray(_2f)){
  215. _2f=$.map(_2f,function(_31){
  216. if(_31&&typeof _31=="object"){
  217. $.easyui.addArrayItem(_30.mappingRows,_30.idField,_31);
  218. return _31[_30.idField];
  219. }else{
  220. return _31;
  221. }
  222. });
  223. }
  224. _16(this,_2f);
  225. });
  226. },setValue:function(jq,_32){
  227. return jq.each(function(){
  228. $(this).combotreegrid("setValues",$.isArray(_32)?_32:[_32]);
  229. });
  230. },clear:function(jq){
  231. return jq.each(function(){
  232. $(this).combotreegrid("setValues",[]);
  233. });
  234. },reset:function(jq){
  235. return jq.each(function(){
  236. var _33=$(this).combotreegrid("options");
  237. if(_33.multiple){
  238. $(this).combotreegrid("setValues",_33.originalValue);
  239. }else{
  240. $(this).combotreegrid("setValue",_33.originalValue);
  241. }
  242. });
  243. }};
  244. $.fn.combotreegrid.parseOptions=function(_34){
  245. var t=$(_34);
  246. return $.extend({},$.fn.combo.parseOptions(_34),$.fn.treegrid.parseOptions(_34),$.parser.parseOptions(_34,["mode",{limitToGrid:"boolean"}]));
  247. };
  248. $.fn.combotreegrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.treegrid.defaults,{editable:false,singleSelect:true,limitToGrid:false,unselectedValues:[],mappingRows:[],mode:"local",keyHandler:{up:function(e){
  249. },down:function(e){
  250. },left:function(e){
  251. },right:function(e){
  252. },enter:function(e){
  253. _28(this);
  254. },query:function(q,e){
  255. _22(this,q);
  256. }},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){
  257. var _35=e.data.target;
  258. var _36=$(_35).combotreegrid("options");
  259. if(_36.limitToGrid){
  260. _28(_35);
  261. }
  262. }}),filter:function(q,row){
  263. var _37=$(this).combotreegrid("options");
  264. return (row[_37.treeField]||"").toLowerCase().indexOf(q.toLowerCase())>=0;
  265. }});
  266. })(jQuery);