Grouping.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. Ext.define('saas.override.grid.feature.Grouping', {
  2. override: 'Ext.grid.feature.Grouping',
  3. getMetaGroup: function(group) {
  4. var me = this,
  5. id = me.getId == null ? me.id : me.getId(),
  6. key, metaGroup, Model, modelData, groupPlaceholder, aggregateRecord, groupingContext;
  7. // Get the group from a member record or the group name
  8. if (group.isModel || typeof group === 'string') {
  9. group = me.getGroup(group);
  10. }
  11. if (group) {
  12. key = group.getGroupKey();
  13. groupingContext = group.$groupingContext || (group.$groupingContext = {});
  14. metaGroup = groupingContext[id];
  15. if (!metaGroup) {
  16. Model = me.getGridStore().getModel();
  17. // Add a placeholder record which represents the group if collapsed.
  18. modelData = {};
  19. modelData[me.getGroupField()] = key;
  20. // Create the two records a group needs to produce a UI.
  21. // One to represent a collapsed group.
  22. // And one to append to the end of an expanded group.
  23. groupPlaceholder = new Model(modelData);
  24. groupPlaceholder.isNonData = groupPlaceholder.isCollapsedPlaceholder = true;
  25. groupPlaceholder.groupKey = key;
  26. aggregateRecord = new Ext.data.Model(modelData);
  27. aggregateRecord.isNonData = aggregateRecord.isSummary = true;
  28. aggregateRecord.groupKey = key;
  29. metaGroup = groupingContext[id] = {
  30. placeholder: groupPlaceholder,
  31. isCollapsed: false,
  32. lastGroup: null,
  33. lastGroupGeneration: null,
  34. lastFilterGeneration: null,
  35. aggregateRecord: aggregateRecord
  36. };
  37. }
  38. }
  39. return metaGroup;
  40. }
  41. });