/** * This class is used internally by the pivot grid component. * @private */Ext.define('Ext.pivot.cell.Group', { extend: 'Ext.pivot.cell.Cell', xtype: 'pivotgridgroupcell', config: { innerGroupStyle: null, innerGroupCls: null, userGroupStyle: null, userGroupCls: null }, innerTemplate: [{ reference: 'iconElement', classList: [ Ext.baseCSSPrefix + 'pivot-grid-group-icon', Ext.baseCSSPrefix + 'font-icon' ] }, { reference: 'groupElement', classList: [ Ext.baseCSSPrefix + 'pivot-grid-group-title' ] }], groupCls: Ext.baseCSSPrefix + 'pivot-grid-group', groupHeaderCls: Ext.baseCSSPrefix + 'pivot-grid-group-header', groupHeaderCollapsibleCls: Ext.baseCSSPrefix + 'pivot-grid-group-header-collapsible', groupHeaderCollapsedCls: Ext.baseCSSPrefix + 'pivot-grid-group-header-collapsed', updateCellCls: function(newCls, oldCls) { var me = this, classes = typeof newCls === 'string' ? newCls.split(' ') : Ext.Array.from(newCls); me.callParent([newCls, oldCls]); me.setEventCell(classes.indexOf(me.groupHeaderCls) < 0); me.setCollapsible(classes.indexOf(me.groupHeaderCollapsibleCls) >= 0); }, updateInnerGroupStyle: function(cellStyle) { this.groupElement.applyStyles(cellStyle); }, updateInnerGroupCls: function(cls, oldCls) { this.groupElement.replaceCls(oldCls, cls); }, updateUserGroupStyle: function(cellStyle) { this.groupElement.applyStyles(cellStyle); }, updateUserGroupCls: function(cls, oldCls) { this.groupElement.replaceCls(oldCls, cls); }, updateRawValue: function(rawValue) { var dom = this.groupElement.dom, value = rawValue == null ? '' : rawValue; if (this.getEncodeHtml()) { dom.textContent = value; } else { dom.innerHTML = value; } }, updateRecord: function(record, oldRecord) { var me = this, info = me.row.getRecordInfo(), dataIndex = me.dataIndex; if (info && dataIndex) { info = info.rendererParams[dataIndex]; if (info && me[info.fn]) { me[info.fn](info, me.row.getGrid()); } else { me.setCellCls(''); } } me.callParent([record, oldRecord]); }, groupOutlineRenderer: function(config, grid) { var me = this, cellCls = '', group = config.group; if (grid.getMatrix().viewLayoutType === 'compact') { // the grand total uses this renderer in compact view and margins need to be reset me.bodyElement.setStyle(grid.isRTL() ? 'padding-right' : 'padding-left', '0'); } if (config.colspan > 0) { cellCls += me.groupHeaderCls + ' ' + me.outlineGroupHeaderCls; if (!config.subtotalRow) { if (group && group.children && group.axis.matrix.collapsibleRows) { cellCls += ' ' + me.groupHeaderCollapsibleCls; if (!config.group.expanded) { cellCls += ' ' + me.groupHeaderCollapsedCls; } } if (config.previousExpanded) { cellCls += ' ' + me.outlineCellGroupExpandedCls; } } me.setCellCls(cellCls); me.setInnerGroupCls(me.groupCls); return; } me.setCellCls(me.outlineCellHiddenCls); }, recordOutlineRenderer: function(config, grid) { var me = this; if (config.hidden) { me.setCellCls(me.outlineCellHiddenCls); return; } me.setCellCls(me.groupHeaderCls); }, groupCompactRenderer: function(config, grid) { var me = this, cellCls = '', group = config.group; me.bodyElement.setStyle( grid.isRTL() ? 'padding-right' : 'padding-left', (me.compactLayoutPadding * group.level) + 'px' ); cellCls += me.groupHeaderCls + ' ' + me.compactGroupHeaderCls; if (!config.subtotalRow) { if (group && group.children && group.axis.matrix.collapsibleRows) { cellCls += ' ' + me.groupHeaderCollapsibleCls; if (!config.group.expanded) { cellCls += ' ' + me.groupHeaderCollapsedCls; } } if (config.previousExpanded) { cellCls += ' ' + me.outlineCellGroupExpandedCls; } } me.setCellCls(cellCls); me.setInnerGroupCls(me.groupCls); }, recordCompactRenderer: function(config, grid) { var me = this; me.bodyElement.setStyle( grid.isRTL() ? 'padding-right' : 'padding-left', (me.compactLayoutPadding * config.group.level) + 'px' ); me.setCellCls(me.groupHeaderCls + ' ' + me.compactGroupHeaderCls); }, groupTabularRenderer: function(config, grid) { var me = this, cellCls = '', group = config.group; cellCls += me.groupHeaderCls + ' ' + me.tabularGroupHeaderCls; if (!config.subtotalRow && !config.hidden) { if (group && group.children && group.axis.matrix.collapsibleRows) { cellCls += ' ' + me.groupHeaderCollapsibleCls; if (!group.expanded) { cellCls += ' ' + me.groupHeaderCollapsedCls; } } } me.setCellCls(cellCls); me.setInnerGroupCls(me.groupCls); }, recordTabularRenderer: function(config) { var me = this; if (config.hidden) { me.setCellCls(me.outlineCellHiddenCls); return; } me.setCellCls(me.groupHeaderCls); }});