jquery.propertygrid.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. /**
  2. * jQuery EasyUI 1.3.6
  3. *
  4. * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
  7. * To use it on other terms please contact us at info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. var _1;
  12. function _2(_3){
  13. var _4=$.data(_3,"propertygrid");
  14. var _5=$.data(_3,"propertygrid").options;
  15. $(_3).datagrid($.extend({},_5,{cls:"propertygrid",view:(_5.showGroup?_5.groupView:_5.view),onClickRow:function(_6,_7){
  16. if(_1!=this){
  17. _a(_1);
  18. _1=this;
  19. }
  20. if(_5.editIndex!=_6&&_7.editor){
  21. var _8=$(this).datagrid("getColumnOption","value");
  22. _8.editor=_7.editor;
  23. _a(_1);
  24. $(this).datagrid("beginEdit",_6);
  25. $(this).datagrid("getEditors",_6)[0].target.focus();
  26. _5.editIndex=_6;
  27. }
  28. _5.onClickRow.call(_3,_6,_7);
  29. },loadFilter:function(_9){
  30. _a(this);
  31. return _5.loadFilter.call(this,_9);
  32. }}));
  33. $(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){
  34. var p=$(e.target).closest("div.datagrid-view,div.combo-panel");
  35. if(p.length){
  36. return;
  37. }
  38. _a(_1);
  39. _1=undefined;
  40. });
  41. };
  42. function _a(_b){
  43. var t=$(_b);
  44. if(!t.length){
  45. return;
  46. }
  47. var _c=$.data(_b,"propertygrid").options;
  48. var _d=_c.editIndex;
  49. if(_d==undefined){
  50. return;
  51. }
  52. var ed=t.datagrid("getEditors",_d)[0];
  53. if(ed){
  54. ed.target.blur();
  55. if(t.datagrid("validateRow",_d)){
  56. t.datagrid("endEdit",_d);
  57. }else{
  58. t.datagrid("cancelEdit",_d);
  59. }
  60. }
  61. _c.editIndex=undefined;
  62. };
  63. $.fn.propertygrid=function(_e,_f){
  64. if(typeof _e=="string"){
  65. var _10=$.fn.propertygrid.methods[_e];
  66. if(_10){
  67. return _10(this,_f);
  68. }else{
  69. return this.datagrid(_e,_f);
  70. }
  71. }
  72. _e=_e||{};
  73. return this.each(function(){
  74. var _11=$.data(this,"propertygrid");
  75. if(_11){
  76. $.extend(_11.options,_e);
  77. }else{
  78. var _12=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_e);
  79. _12.frozenColumns=$.extend(true,[],_12.frozenColumns);
  80. _12.columns=$.extend(true,[],_12.columns);
  81. $.data(this,"propertygrid",{options:_12});
  82. }
  83. _2(this);
  84. });
  85. };
  86. $.fn.propertygrid.methods={options:function(jq){
  87. return $.data(jq[0],"propertygrid").options;
  88. }};
  89. $.fn.propertygrid.parseOptions=function(_13){
  90. return $.extend({},$.fn.datagrid.parseOptions(_13),$.parser.parseOptions(_13,[{showGroup:"boolean"}]));
  91. };
  92. var _14=$.extend({},$.fn.datagrid.defaults.view,{render:function(_15,_16,_17){
  93. var _18=[];
  94. var _19=this.groups;
  95. for(var i=0;i<_19.length;i++){
  96. _18.push(this.renderGroup.call(this,_15,i,_19[i],_17));
  97. }
  98. $(_16).html(_18.join(""));
  99. },renderGroup:function(_1a,_1b,_1c,_1d){
  100. var _1e=$.data(_1a,"datagrid");
  101. var _1f=_1e.options;
  102. var _20=$(_1a).datagrid("getColumnFields",_1d);
  103. var _21=[];
  104. _21.push("<div class=\"datagrid-group\" group-index="+_1b+">");
  105. _21.push("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"height:100%\"><tbody>");
  106. _21.push("<tr>");
  107. if((_1d&&(_1f.rownumbers||_1f.frozenColumns.length))||(!_1d&&!(_1f.rownumbers||_1f.frozenColumns.length))){
  108. _21.push("<td style=\"border:0;text-align:center;width:25px\"><span class=\"datagrid-row-expander datagrid-row-collapse\" style=\"display:inline-block;width:16px;height:16px;cursor:pointer\">&nbsp;</span></td>");
  109. }
  110. _21.push("<td style=\"border:0;\">");
  111. if(!_1d){
  112. _21.push("<span class=\"datagrid-group-title\">");
  113. _21.push(_1f.groupFormatter.call(_1a,_1c.value,_1c.rows));
  114. _21.push("</span>");
  115. }
  116. _21.push("</td>");
  117. _21.push("</tr>");
  118. _21.push("</tbody></table>");
  119. _21.push("</div>");
  120. _21.push("<table class=\"datagrid-btable\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tbody>");
  121. var _22=_1c.startIndex;
  122. for(var j=0;j<_1c.rows.length;j++){
  123. var css=_1f.rowStyler?_1f.rowStyler.call(_1a,_22,_1c.rows[j]):"";
  124. var _23="";
  125. var _24="";
  126. if(typeof css=="string"){
  127. _24=css;
  128. }else{
  129. if(css){
  130. _23=css["class"]||"";
  131. _24=css["style"]||"";
  132. }
  133. }
  134. var cls="class=\"datagrid-row "+(_22%2&&_1f.striped?"datagrid-row-alt ":" ")+_23+"\"";
  135. var _25=_24?"style=\""+_24+"\"":"";
  136. var _26=_1e.rowIdPrefix+"-"+(_1d?1:2)+"-"+_22;
  137. _21.push("<tr id=\""+_26+"\" datagrid-row-index=\""+_22+"\" "+cls+" "+_25+">");
  138. _21.push(this.renderRow.call(this,_1a,_20,_1d,_22,_1c.rows[j]));
  139. _21.push("</tr>");
  140. _22++;
  141. }
  142. _21.push("</tbody></table>");
  143. return _21.join("");
  144. },bindEvents:function(_27){
  145. var _28=$.data(_27,"datagrid");
  146. var dc=_28.dc;
  147. var _29=dc.body1.add(dc.body2);
  148. var _2a=($.data(_29[0],"events")||$._data(_29[0],"events")).click[0].handler;
  149. _29.unbind("click").bind("click",function(e){
  150. var tt=$(e.target);
  151. var _2b=tt.closest("span.datagrid-row-expander");
  152. if(_2b.length){
  153. var _2c=_2b.closest("div.datagrid-group").attr("group-index");
  154. if(_2b.hasClass("datagrid-row-collapse")){
  155. $(_27).datagrid("collapseGroup",_2c);
  156. }else{
  157. $(_27).datagrid("expandGroup",_2c);
  158. }
  159. }else{
  160. _2a(e);
  161. }
  162. e.stopPropagation();
  163. });
  164. },onBeforeRender:function(_2d,_2e){
  165. var _2f=$.data(_2d,"datagrid");
  166. var _30=_2f.options;
  167. _31();
  168. var _32=[];
  169. for(var i=0;i<_2e.length;i++){
  170. var row=_2e[i];
  171. var _33=_34(row[_30.groupField]);
  172. if(!_33){
  173. _33={value:row[_30.groupField],rows:[row]};
  174. _32.push(_33);
  175. }else{
  176. _33.rows.push(row);
  177. }
  178. }
  179. var _35=0;
  180. var _36=[];
  181. for(var i=0;i<_32.length;i++){
  182. var _33=_32[i];
  183. _33.startIndex=_35;
  184. _35+=_33.rows.length;
  185. _36=_36.concat(_33.rows);
  186. }
  187. _2f.data.rows=_36;
  188. this.groups=_32;
  189. var _37=this;
  190. setTimeout(function(){
  191. _37.bindEvents(_2d);
  192. },0);
  193. function _34(_38){
  194. for(var i=0;i<_32.length;i++){
  195. var _39=_32[i];
  196. if(_39.value==_38){
  197. return _39;
  198. }
  199. }
  200. return null;
  201. };
  202. function _31(){
  203. if(!$("#datagrid-group-style").length){
  204. $("head").append("<style id=\"datagrid-group-style\">"+".datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}"+"</style>");
  205. }
  206. };
  207. }});
  208. $.extend($.fn.datagrid.methods,{expandGroup:function(jq,_3a){
  209. return jq.each(function(){
  210. var _3b=$.data(this,"datagrid").dc.view;
  211. var _3c=_3b.find(_3a!=undefined?"div.datagrid-group[group-index=\""+_3a+"\"]":"div.datagrid-group");
  212. var _3d=_3c.find("span.datagrid-row-expander");
  213. if(_3d.hasClass("datagrid-row-expand")){
  214. _3d.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse");
  215. _3c.next("table").show();
  216. }
  217. $(this).datagrid("fixRowHeight");
  218. });
  219. },collapseGroup:function(jq,_3e){
  220. return jq.each(function(){
  221. var _3f=$.data(this,"datagrid").dc.view;
  222. var _40=_3f.find(_3e!=undefined?"div.datagrid-group[group-index=\""+_3e+"\"]":"div.datagrid-group");
  223. var _41=_40.find("span.datagrid-row-expander");
  224. if(_41.hasClass("datagrid-row-collapse")){
  225. _41.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand");
  226. _40.next("table").hide();
  227. }
  228. $(this).datagrid("fixRowHeight");
  229. });
  230. }});
  231. $.fn.propertygrid.defaults=$.extend({},$.fn.datagrid.defaults,{singleSelect:true,remoteSort:false,fitColumns:true,loadMsg:"",frozenColumns:[[{field:"f",width:16,resizable:false}]],columns:[[{field:"name",title:"Name",width:100,sortable:true},{field:"value",title:"Value",width:100,resizable:false}]],showGroup:false,groupView:_14,groupField:"group",groupFormatter:function(_42,_43){
  232. return _42;
  233. }});
  234. })(jQuery);