UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

127 lines (96 loc) 3.78 kB
"use strict"; var _noop = require("../core/utils/common").noop, registerComponent = require("../core/component_registrator"), extend = require("../core/utils/extend").extend, vizUtils = require("./core/utils"), AdvancedChart = require("./chart_components/advanced_chart").AdvancedChart, DEFAULT_PANE_NAME = 'default'; var dxPolarChart = AdvancedChart.inherit({ _chartType: 'polar', _createPanes: function _createPanes() { return [{ name: DEFAULT_PANE_NAME }]; }, _checkPaneName: function _checkPaneName() { return true; }, _getAxisRenderingOptions: function _getAxisRenderingOptions(typeSelector) { var isArgumentAxis = typeSelector === "argumentAxis", type = isArgumentAxis ? "circular" : "linear", useSpiderWeb = this.option("useSpiderWeb"); if (useSpiderWeb) { type += "Spider"; } return { axisType: "polarAxes", drawingType: type }; }, _prepareAxisOptions: function _prepareAxisOptions(typeSelector, axisOptions) { var isArgumentAxis = typeSelector === "argumentAxis", themeManager = this._themeManager, axisUserOptions = this.option("argumentAxis"), argumentAxisOptions = themeManager.getOptions("argumentAxis", axisUserOptions) || {}, startAngle = isFinite(argumentAxisOptions.startAngle) ? vizUtils.normalizeAngle(argumentAxisOptions.startAngle) : 0; return { type: this.option("useSpiderWeb") && isArgumentAxis ? "discrete" : axisOptions.type, isHorizontal: true, showCustomBoundaryTicks: isArgumentAxis, startAngle: startAngle, endAngle: startAngle + 360 }; }, _optionChangesMap: { useSpiderWeb: "AXES_AND_PANES" }, _getExtraOptions: function _getExtraOptions() { return { spiderWidget: this.option("useSpiderWeb") }; }, _prepareToRender: function _prepareToRender() { this._appendAxesGroups(); return {}; }, _renderAxes: function _renderAxes(drawOptions) { var that = this, valueAxis = that._getValueAxis(), argumentAxis = that._getArgumentAxis(); var canvas = that._calcCanvas(argumentAxis.measureLabels(extend({}, that._canvas), true)); argumentAxis.draw(canvas); valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks()); valueAxis.draw(canvas); }, _getValueAxis: function _getValueAxis() { return this._valueAxes[0]; }, _shrinkAxes: function _shrinkAxes(drawOptions, sizeShortage) { var valueAxis = this._getValueAxis(), argumentAxis = this._getArgumentAxis(); if (sizeShortage && (sizeShortage.width || sizeShortage.height)) { argumentAxis.hideOuterElements(); argumentAxis.updateSize(this._canvas); valueAxis.updateSize(this._canvas); } }, _calcCanvas: function _calcCanvas(measure) { var canvas = extend({}, this._canvas); canvas.left += measure.width; canvas.right += measure.width; canvas.top += measure.height; canvas.bottom += measure.height; return canvas; }, _getLayoutTargets: function _getLayoutTargets() { return [{ canvas: this._canvas }]; }, _getSeriesForPane: function _getSeriesForPane() { return this.series; }, _applyExtraSettings: _noop, _updateLegendPosition: _noop, _createScrollBar: _noop, _applyClipRects: _noop, _isRotated: _noop, _getCrosshairOptions: _noop, _isLegendInside: _noop }); registerComponent("dxPolarChart", dxPolarChart); module.exports = dxPolarChart;