Ext.define('saas.override.grid.feature.Grouping', { override: 'Ext.grid.feature.Grouping', getMetaGroup: function(group) { var me = this, id = me.getId == null ? me.id : me.getId(), key, metaGroup, Model, modelData, groupPlaceholder, aggregateRecord, groupingContext; // Get the group from a member record or the group name if (group.isModel || typeof group === 'string') { group = me.getGroup(group); } if (group) { key = group.getGroupKey(); groupingContext = group.$groupingContext || (group.$groupingContext = {}); metaGroup = groupingContext[id]; if (!metaGroup) { Model = me.getGridStore().getModel(); // Add a placeholder record which represents the group if collapsed. modelData = {}; modelData[me.getGroupField()] = key; // Create the two records a group needs to produce a UI. // One to represent a collapsed group. // And one to append to the end of an expanded group. groupPlaceholder = new Model(modelData); groupPlaceholder.isNonData = groupPlaceholder.isCollapsedPlaceholder = true; groupPlaceholder.groupKey = key; aggregateRecord = new Ext.data.Model(modelData); aggregateRecord.isNonData = aggregateRecord.isSummary = true; aggregateRecord.groupKey = key; metaGroup = groupingContext[id] = { placeholder: groupPlaceholder, isCollapsed: false, lastGroup: null, lastGroupGeneration: null, lastFilterGeneration: null, aggregateRecord: aggregateRecord }; } } return metaGroup; } });