/** * This class extends the dimension item to be able to provide additional settings * in the configurator plugin. */Ext.define('Ext.pivot.plugin.configurator.Field', { extend: 'Ext.pivot.dimension.Item', requires: [ 'Ext.pivot.plugin.configurator.FieldSettings' ], config: { /** * The CellEditing plugin uses an `editor` config on the dimension * to be able to set the editor for the aggregate dimensions. * When the CellEditing plugin is used together with the Configurator * plugin then this config is lost if the dimensions are reconfigured. * @private */ editor: null, /** * @cfg {Ext.pivot.plugin.configurator.FieldSettings} settings * * Define special restrictions or configurations for this field. */ settings: {} }, isField: true, clone: function() { return new Ext.pivot.plugin.configurator.Field( Ext.applyIf({ id: Ext.id() }, this.getInitialConfig()) ); }, getConfiguration: function(serializable) { var cfg = this.callParent([serializable]); if (cfg.settings) { cfg.settings = cfg.settings.getConfig(); } return cfg; }, updateAggregator: function(agg, oldAgg) { var settings, fns; this.callParent([agg, oldAgg]); if (agg) { settings = this.getSettings(); fns = settings.getAggregators(); if (fns.length === 0) { Ext.Array.remove(settings.getAllowed(), 'aggregate'); } else { Ext.Array.include(fns, agg); } } }, getSettings: function() { var ret = this.settings; if (!ret) { ret = new Ext.pivot.plugin.configurator.FieldSettings({}); this.setSettings(ret); } return ret; }, applySettings: function(settings, obj) { if (settings == null || (settings && settings.isFieldSettings)) { return settings; } if (settings) { if (!obj) { obj = this.getSettings(); } obj.setConfig(settings); } if (obj) { this.setAggregator(this.getAggregator()); } return obj; }, getFieldText: function() { var header = this.getHeader(); if (this.isAggregate) { header += ' (' + this.getAggText() + ')'; } return header; }, getAggText: function(fn) { var Agg = Ext.pivot.Aggregators, f = fn || this.getAggregator(); if (Ext.isFunction(f)) { return Agg.customText; } return Agg[f + 'Text'] || Agg.customText; }});