/** * @abstract * @class Ext.chart.series.Polar * @extends Ext.chart.series.Series * * Common base class for series implementations that plot values using polar coordinates. * * Polar charts accept angles in radians. You can calculate radians with the following * formula: * * radians = degrees x Π/180 */Ext.define('Ext.chart.series.Polar', { extend: 'Ext.chart.series.Series', config: { /** * @cfg {Number} [rotation=0] * The angle in radians at which the first polar series item should start. */ rotation: 0, /** * @cfg {Number} radius * @private * Use {@link Ext.chart.series.Pie#cfg!radiusFactor radiusFactor} instead. * * The internally used radius of the polar series. Set to `null` will fit the * polar series to the boundary. */ radius: null, /** * @cfg {Array} center for the polar series. */ center: [0, 0], /** * @cfg {Number} [offsetX=0] * The x-offset of center of the polar series related to the center of the boundary. */ offsetX: 0, /** * @cfg {Number} [offsetY=0] * The y-offset of center of the polar series related to the center of the boundary. */ offsetY: 0, /** * @cfg {Boolean} [showInLegend=true] * Whether to add the series elements as legend items. */ showInLegend: true, /** * @private * @cfg {String} xField */ xField: null, /** * @private * @cfg {String} yField */ yField: null, /** * @cfg {String} angleField * The store record field name for the angular axes in radar charts, * or the size of the slices in pie charts. */ angleField: null, /** * @cfg {String} radiusField * The store record field name for the radial axes in radar charts, * or the radius of the slices in pie charts. */ radiusField: null, xAxis: null, yAxis: null }, directions: ['X', 'Y'], fieldCategoryX: ['X'], fieldCategoryY: ['Y'], deprecatedConfigs: { field: 'angleField', lengthField: 'radiusField' }, constructor: function (config) { var me = this, configurator = me.self.getConfigurator(), configs = configurator.configs, p; if (config) { for (p in me.deprecatedConfigs) { if (p in config && !(config in configs)) { Ext.raise("'" + p + "' config has been deprecated. Please use the '" + me.deprecatedConfigs[p] + "' config instead."); } } } me.callParent([config]); }, getXField: function () { return this.getAngleField(); }, updateXField: function (value) { this.setAngleField(value); }, getYField: function () { return this.getRadiusField(); }, updateYField: function (value) { this.setRadiusField(value); }, applyXAxis: function (newAxis, oldAxis) { return this.getChart().getAxis(newAxis) || oldAxis; }, applyYAxis: function (newAxis, oldAxis) { return this.getChart().getAxis(newAxis) || oldAxis; }, getXRange: function () { return [this.dataRange[0], this.dataRange[2]]; }, getYRange: function () { return [this.dataRange[1], this.dataRange[3]]; }, themeColorCount: function() { var me = this, store = me.getStore(), count = store && store.getCount() || 0; return count; }, isStoreDependantColorCount: true, getDefaultSpriteConfig: function () { return { type: this.seriesType, renderer: this.getRenderer(), centerX: 0, centerY: 0, rotationCenterX: 0, rotationCenterY: 0 }; }, applyRotation: function (rotation) { return Ext.draw.sprite.AttributeParser.angle(Ext.draw.Draw.rad(rotation)); }, updateRotation: function (rotation) { var sprites = this.getSprites(); if (sprites && sprites[0]) { sprites[0].setAttributes({ baseRotation: rotation }); } }});