Advertisement
Guest User

Untitled

a guest
Dec 12th, 2009
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. /**
  2. * Added ability to disable grouping menu
  3. */
  4. Ext.override(Ext.grid.GroupingView, {
  5.  
  6. beforeMenuShow: function() {
  7.  
  8. var field = this.getGroupField();
  9. var g = this.hmenu.items.get('groupBy');
  10.  
  11. if(g) {
  12. g.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false); }
  13.  
  14. var s = this.hmenu.items.get('showGroups');
  15.  
  16. if(s) {
  17. s.setDisabled(!field && this.cm.config[this.hdCtxIndex].groupable === false);
  18. s.setChecked(!!field, true);
  19. }
  20.  
  21. }
  22.  
  23. });
  24.  
  25. /**
  26. * Performance hack for GroupingView
  27. **/
  28. Ext.override(Ext.grid.GroupingView, {
  29.  
  30. onLayout : function() {
  31. },
  32.  
  33. afterRender: function() {
  34.  
  35. Ext.grid.GroupingView.superclass.afterRender.call(this);
  36.  
  37. }
  38.  
  39. });
  40.  
  41. /**
  42. * Added ability to define compare column using
  43. * groupCompareByFieldValue
  44. *
  45. * @param {Object} cs
  46. * @param {Object} rs
  47. * @param {Object} ds
  48. * @param {Object} startRow
  49. * @param {Object} colCount
  50. * @param {Object} stripe
  51. */
  52. Ext.override(Ext.grid.GroupingView, {
  53.  
  54. doRender : function(cs, rs, ds, startRow, colCount, stripe){
  55.  
  56. if(rs.length < 1){
  57. return ''; }
  58.  
  59. var groupField = this.getGroupField();
  60. var colIndex = this.cm.findColumnIndex(groupField);
  61.  
  62. this.enableGrouping = !!groupField;
  63.  
  64. if(!this.enableGrouping || this.isUpdating){
  65. return Ext.grid.GroupingView.superclass.doRender.apply(
  66. this, arguments);
  67. }
  68. var gstyle = 'width:'+this.getTotalWidth()+';';
  69.  
  70. var gidPrefix = this.grid.getGridEl().id;
  71. var cfg = this.cm.config[colIndex];
  72.  
  73. var groupRenderer = cfg.groupRenderer || cfg.renderer;
  74. var prefix = this.showGroupName ? (cfg.groupName || cfg.header) + ': ' : '';
  75.  
  76. var groups = [], curGroup, i, len, gid;
  77. for(i = 0, len = rs.length; i < len; i++){
  78. var rowIndex = startRow + i;
  79. var r = rs[i];
  80.  
  81. if( !cfg.groupCompareByFieldValue ) {
  82.  
  83. var gvalue = r.data[groupField];
  84. var g = this.getGroup(gvalue, r, groupRenderer, rowIndex, colIndex, ds);
  85.  
  86. } else {
  87.  
  88. var gvalue = r.data[cfg.groupCompareByFieldValue];
  89. var g = r.data[cfg.groupCompareByFieldValue];
  90.  
  91. }
  92.  
  93. if(!curGroup || curGroup.group != g){
  94.  
  95. if( !cfg.groupCompareByFieldValue ) {
  96.  
  97. var gtext = g;
  98.  
  99. } else {
  100.  
  101. var gtext = this.getGroup(r.data[groupField], r, groupRenderer, rowIndex, colIndex, ds);
  102.  
  103. }
  104.  
  105. gid = gidPrefix + '-gp-' + groupField + '-' + Ext.util.Format.htmlEncode(g);
  106.  
  107. // if state is defined use it, however state is in terms of expanded
  108. // so negate it, otherwise use the default.
  109. var isCollapsed = typeof this.state[gid] !== 'undefined' ? !this.state[gid] : this.startCollapsed;
  110. var gcls = isCollapsed ? 'x-grid-group-collapsed' : '';
  111.  
  112. curGroup = {
  113. group: g,
  114. gvalue: gvalue,
  115. text: prefix + gtext,
  116. groupId: gid,
  117. startRow: rowIndex,
  118. rs: [r],
  119. cls: gcls,
  120. style: gstyle
  121. };
  122.  
  123. groups.push(curGroup);
  124.  
  125. } else {
  126.  
  127. curGroup.rs.push(r);
  128.  
  129. }
  130. r._groupId = gid;
  131. }
  132.  
  133. var buf = [];
  134. for(i = 0, len = groups.length; i < len; i++){
  135. var g = groups[i];
  136. this.doGroupStart(buf, g, cs, ds, colCount);
  137. buf[buf.length] = Ext.grid.GroupingView.superclass.doRender.call(
  138. this, cs, g.rs, ds, g.startRow, colCount, stripe);
  139.  
  140. this.doGroupEnd(buf, g, cs, ds, colCount);
  141. }
  142.  
  143. return buf.join('');
  144. }
  145.  
  146. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement