UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

218 lines (216 loc) • 8.29 kB
/** * DevExtreme (cjs/__internal/viz/m_polar_chart.js) * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _component_registrator = _interopRequireDefault(require("../../core/component_registrator")); var _common = require("../../core/utils/common"); var _extend = require("../../core/utils/extend"); var _type = require("../../core/utils/type"); var _annotations = require("../../viz/core/annotations"); var _utils = require("../../viz/core/utils"); var _m_advanced_chart = require("./chart_components/m_advanced_chart"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_PANE_NAME = "default"; const DOUBLE_PI_ANGLE = 360; const dxPolarChart = _m_advanced_chart.AdvancedChart.inherit({ _themeSection: "polar", _createPanes() { this.callBase(); return [{ name: "default" }] }, _checkPaneName: () => true, _getAxisRenderingOptions(typeSelector) { const isArgumentAxis = "argumentAxis" === typeSelector; let type = isArgumentAxis ? "circular" : "linear"; const useSpiderWeb = this.option("useSpiderWeb"); if (useSpiderWeb) { type += "Spider" } return { axisType: "polarAxes", drawingType: type } }, _executeAppendBeforeSeries(append) { append() }, _prepareAxisOptions(typeSelector, axisOptions) { const isArgumentAxis = "argumentAxis" === typeSelector; const themeManager = this._themeManager; const axisUserOptions = this.option("argumentAxis"); const argumentAxisOptions = themeManager.getOptions("argumentAxis", axisUserOptions) || {}; const startAngle = isFinite(argumentAxisOptions.startAngle) ? (0, _utils.normalizeAngle)(argumentAxisOptions.startAngle) : 0; return { type: this.option("useSpiderWeb") && isArgumentAxis ? "discrete" : axisOptions.type, isHorizontal: true, showCustomBoundaryTicks: isArgumentAxis, startAngle: startAngle, endAngle: startAngle + 360 } }, _optionChangesMap: { useSpiderWeb: "USE_SPIDER_WEB" }, _change_USE_SPIDER_WEB() { this._disposeAxes(); this._requestChange(["AXES_AND_PANES"]) }, _getExtraOptions() { return { spiderWidget: this.option("useSpiderWeb") } }, _prepareToRender() { this._appendAxesGroups(); return {} }, _calcCanvas() { const canvas = (0, _extend.extend)({}, this._canvas); const argumentAxis = this.getArgumentAxis(); const margins = argumentAxis.getMargins(); Object.keys(margins).forEach((margin => { canvas[margin] = canvas[`original${margin[0].toUpperCase()}${margin.slice(1)}`] + margins[margin] })); return canvas }, _renderAxes() { const valueAxis = this._getValueAxis(); const argumentAxis = this.getArgumentAxis(); argumentAxis.draw(this._canvas); valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks()); const canvas = this._calcCanvas(); argumentAxis.updateSize(canvas); valueAxis.draw(canvas); return canvas }, _getValueAxis() { return this._valueAxes[0] }, _shrinkAxes(sizeStorage) { const valueAxis = this._getValueAxis(); const argumentAxis = this.getArgumentAxis(); if (sizeStorage && (sizeStorage.width || sizeStorage.height)) { argumentAxis.hideOuterElements(); const canvas = this._calcCanvas(); argumentAxis.updateSize(canvas); valueAxis.updateSize(canvas) } }, checkForMoreSpaceForPanesCanvas() { return this.layoutManager.needMoreSpaceForPanesCanvas([{ canvas: this.getArgumentAxis().getCanvas() }], this._isRotated()) }, _getLayoutTargets() { return [{ canvas: this._canvas }] }, _getSeriesForPane() { return this.series }, _applyClipRects() { const canvasClipRectID = this._getCanvasClipRectID(); this._createClipPathForPane(); this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID); this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID) }, _createClipPathForPane() { const valueAxis = this._getValueAxis(); let center = valueAxis.getCenter(); const radius = valueAxis.getRadius(); const panesClipRects = this._panesClipRects; center = { x: Math.round(center.x), y: Math.round(center.y) }; this._createClipCircle(panesClipRects.fixed, center.x, center.y, radius); this._createClipCircle(panesClipRects.base, center.x, center.y, radius); if (this.series.some((s => s.areErrorBarsVisible()))) { this._createClipCircle(panesClipRects.wide, center.x, center.y, radius) } else { panesClipRects.wide[0] = null } }, _createClipCircle(clipArray, left, top, radius) { let clipCircle = clipArray[0]; if (!clipCircle) { clipCircle = this._renderer.clipCircle(left, top, radius); clipArray[0] = clipCircle } else { clipCircle.attr({ cx: left, cy: top, r: radius }) } }, _applyExtraSettings(series) { const wideClipRect = this._panesClipRects.wide[0]; series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false) }, getActualAngle(angle) { return this.getArgumentAxis().getOptions().inverted ? 360 - angle : angle }, getXYFromPolar(angle, radius, argument, value) { const layoutInfo = { angle: void 0, radius: void 0, x: void 0, y: void 0 }; if (!(0, _type.isDefined)(angle) && !(0, _type.isDefined)(radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(value)) { return layoutInfo } const argAxis = this.getArgumentAxis(); const startAngle = argAxis.getAngles()[0]; let argAngle; let translatedRadius; if ((0, _type.isDefined)(argument)) { argAngle = argAxis.getTranslator().translate(argument) } else if (isFinite(angle)) { argAngle = this.getActualAngle(angle) } else if (!(0, _type.isDefined)(angle)) { argAngle = 0 } if ((0, _type.isDefined)(value)) { translatedRadius = this.getValueAxis().getTranslator().translate(value) } else if (isFinite(radius)) { translatedRadius = radius } else if (!(0, _type.isDefined)(radius)) { translatedRadius = argAxis.getRadius() } if ((0, _type.isDefined)(argAngle) && (0, _type.isDefined)(translatedRadius)) { const coords = (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, argAngle, translatedRadius); (0, _extend.extend)(layoutInfo, coords, { angle: argAxis.getTranslatedAngle(argAngle), radius: translatedRadius }) } return layoutInfo }, _applyPointMarkersAutoHiding: _common.noop, _createScrollBar: _common.noop, _isRotated: _common.noop, _getCrosshairOptions: _common.noop, _isLegendInside: _common.noop }); dxPolarChart.addPlugin(_annotations.plugins.core); dxPolarChart.addPlugin(_annotations.plugins.polarChart); (0, _component_registrator.default)("dxPolarChart", dxPolarChart); var _default = exports.default = dxPolarChart;