UNPKG

@progress/kendo-charts

Version:

Kendo UI platform-independent Charts library

139 lines (105 loc) 3.7 kB
import PolarPlotAreaBase from './polar-plotarea-base'; import PlotAreaBase from './plotarea-base'; import PolarLineChart from '../polar-line-chart/polar-line-chart'; import PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart'; import PolarAreaChart from '../polar-area-chart/polar-area-chart'; import PlotAreaEventsMixin from '../mixins/plotarea-events-mixin'; import { PolarAxis, Point } from '../../core'; import { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants'; import filterSeriesByType from '../utils/filter-series-by-type'; import { ARC } from '../../common/constants'; import { deepExtend, eventElement, setDefaultOptions } from '../../common'; import XYPlotArea from './xy-plotarea'; class PolarPlotArea extends PolarPlotAreaBase { createPolarAxis() { const polarAxis = new PolarAxis(this.options.xAxis, this.chartService); this.polarAxis = polarAxis; this.axisX = polarAxis; this.appendAxis(polarAxis); } render() { this.series = [...this.originalSeries]; this.createTrendlineSeries(); super.render(); } valueAxisOptions(defaults) { return deepExtend(defaults, { majorGridLines: { type: ARC }, minorGridLines: { type: ARC } }, this.options.yAxis); } createValueAxis() { super.createValueAxis(); this.axisY = this.valueAxis; } trendlineFactory(options, series) { const trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series); if (trendline) { trendline.type = POLAR_LINE; } return trendline; } appendChart(chart, pane) { this.valueAxisRangeTracker.update(chart.yAxisRanges); PlotAreaBase.prototype.appendChart.call(this, chart, pane); } createCharts() { const series = this.filterVisibleSeries(this.series); const pane = this.panes[0]; this.createLineChart( filterSeriesByType(series, [ POLAR_LINE ]), pane ); this.createScatterChart( filterSeriesByType(series, [ POLAR_SCATTER ]), pane ); this.createAreaChart( filterSeriesByType(series, [ POLAR_AREA ]), pane ); } createLineChart(series, pane) { if (series.length === 0) { return; } const lineChart = new PolarLineChart(this, { series: series }); this.appendChart(lineChart, pane); } createScatterChart(series, pane) { if (series.length === 0) { return; } const scatterChart = new PolarScatterChart(this, { series: series }); this.appendChart(scatterChart, pane); } createAreaChart(series, pane) { if (series.length === 0) { return; } const areaChart = new PolarAreaChart(this, { series: series }); this.appendChart(areaChart, pane); } _dispatchEvent(chart, e, eventType) { const coords = chart._eventCoordinates(e); const point = new Point(coords.x, coords.y); const xValue = this.axisX.getValue(point); const yValue = this.axisY.getValue(point); if (xValue !== null && yValue !== null) { chart.trigger(eventType, { element: eventElement(e), x: xValue, y: yValue }); } } createCrosshairs() {} } setDefaultOptions(PolarPlotArea, { xAxis: {}, yAxis: {} }); deepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, { seriesValues: XYPlotArea.prototype.seriesValues }); export default PolarPlotArea;