jquery.propertygrid.js 6.7 KB

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