/** * This container can host D3 drawing components that need a pivot configurator * plugin. */Ext.define('Ext.pivot.d3.AbstractContainer', { extend: 'Ext.panel.Panel', requires: [ 'Ext.pivot.d3.HeatMap', 'Ext.pivot.plugin.Configurator' ], // this makes the pivot configurator plugin work with this container isPivotComponent: true, config: { /** * @cfg {Ext.pivot.matrix.Base} matrix (required) * * This is the pivot matrix used by the pivot D3 container. All axis and aggregate dimensions should * be defined here. * * Needed by this pivot container so that the configurator plugin can call getMatrix. * * This matrix is also used by the {@link #drawing}. */ matrix: { type: 'local' }, /** * @cfg {Ext.Component} drawing * * Configuration object for the item that will be added to this container */ drawing: { xtype: 'pivotheatmap' }, /** * @cfg {Ext.pivot.plugin.Configurator} configurator * * Configuration object for the pivot Configurator plugin. */ configurator: null }, destroy: function(){ this.setMatrix(null); this.callParent(); }, addDrawing: function(){ this.add(Ext.applyIf({ matrix: this.getMatrix() }, this.getDrawing())); }, applyMatrix: function(newMatrix, oldMatrix){ Ext.destroy(oldMatrix); if(newMatrix == null){ return newMatrix; } if(newMatrix && newMatrix.isPivotMatrix){ newMatrix.cmp = this; return newMatrix; } Ext.applyIf(newMatrix, { type: 'local' }); newMatrix.cmp = this; return Ext.Factory.pivotmatrix(newMatrix); }, applyConfigurator: function(plugin){ return plugin ? this.addPlugin(plugin) : null; }, updateConfigurator: function(plugin, oldPlugin){ if(oldPlugin){ this.removePlugin(oldPlugin); } } });