|
|
@@ -0,0 +1,43 @@
|
|
|
+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;
|
|
|
+ }
|
|
|
+
|
|
|
+});
|