Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Added ability to disable grouping menu
- */
- Ext.override(Ext.grid.GroupingView, {
- beforeMenuShow: function() {
- var field = this.getGroupField();
- var g = this.hmenu.items.get('groupBy');
- if(g) {
- g.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false); }
- var s = this.hmenu.items.get('showGroups');
- if(s) {
- s.setDisabled(!field && this.cm.config[this.hdCtxIndex].groupable === false);
- s.setChecked(!!field, true);
- }
- }
- });
- /**
- * Performance hack for GroupingView
- **/
- Ext.override(Ext.grid.GroupingView, {
- onLayout : function() {
- },
- afterRender: function() {
- Ext.grid.GroupingView.superclass.afterRender.call(this);
- }
- });
- /**
- * Added ability to define compare column using
- * groupCompareByFieldValue
- *
- * @param {Object} cs
- * @param {Object} rs
- * @param {Object} ds
- * @param {Object} startRow
- * @param {Object} colCount
- * @param {Object} stripe
- */
- Ext.override(Ext.grid.GroupingView, {
- doRender : function(cs, rs, ds, startRow, colCount, stripe){
- if(rs.length < 1){
- return ''; }
- var groupField = this.getGroupField();
- var colIndex = this.cm.findColumnIndex(groupField);
- this.enableGrouping = !!groupField;
- if(!this.enableGrouping || this.isUpdating){
- return Ext.grid.GroupingView.superclass.doRender.apply(
- this, arguments);
- }
- var gstyle = 'width:'+this.getTotalWidth()+';';
- var gidPrefix = this.grid.getGridEl().id;
- var cfg = this.cm.config[colIndex];
- var groupRenderer = cfg.groupRenderer || cfg.renderer;
- var prefix = this.showGroupName ? (cfg.groupName || cfg.header) + ': ' : '';
- var groups = [], curGroup, i, len, gid;
- for(i = 0, len = rs.length; i < len; i++){
- var rowIndex = startRow + i;
- var r = rs[i];
- if( !cfg.groupCompareByFieldValue ) {
- var gvalue = r.data[groupField];
- var g = this.getGroup(gvalue, r, groupRenderer, rowIndex, colIndex, ds);
- } else {
- var gvalue = r.data[cfg.groupCompareByFieldValue];
- var g = r.data[cfg.groupCompareByFieldValue];
- }
- if(!curGroup || curGroup.group != g){
- if( !cfg.groupCompareByFieldValue ) {
- var gtext = g;
- } else {
- var gtext = this.getGroup(r.data[groupField], r, groupRenderer, rowIndex, colIndex, ds);
- }
- gid = gidPrefix + '-gp-' + groupField + '-' + Ext.util.Format.htmlEncode(g);
- // if state is defined use it, however state is in terms of expanded
- // so negate it, otherwise use the default.
- var isCollapsed = typeof this.state[gid] !== 'undefined' ? !this.state[gid] : this.startCollapsed;
- var gcls = isCollapsed ? 'x-grid-group-collapsed' : '';
- curGroup = {
- group: g,
- gvalue: gvalue,
- text: prefix + gtext,
- groupId: gid,
- startRow: rowIndex,
- rs: [r],
- cls: gcls,
- style: gstyle
- };
- groups.push(curGroup);
- } else {
- curGroup.rs.push(r);
- }
- r._groupId = gid;
- }
- var buf = [];
- for(i = 0, len = groups.length; i < len; i++){
- var g = groups[i];
- this.doGroupStart(buf, g, cs, ds, colCount);
- buf[buf.length] = Ext.grid.GroupingView.superclass.doRender.call(
- this, cs, g.rs, ds, g.startRow, colCount, stripe);
- this.doGroupEnd(buf, g, cs, ds, colCount);
- }
- return buf.join('');
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement