UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

249 lines (247 loc) • 10.1 kB
/** * DevExtreme (cjs/__internal/viz/series/bar_series.js) * Version: 25.2.8 * Build date: Mon Jun 08 2026 * * Copyright (c) 2012 - 2026 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.polar = exports.chart = void 0; var _extend2 = require("../../../core/utils/extend"); var _iterator = require("../../../core/utils/iterator"); var _type = require("../../../core/utils/type"); var _utils = require("../../viz/core/utils"); var _area_series = require("./area_series"); var scatterSeries = _interopRequireWildcard(require("./scatter_series")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) { var r = new WeakMap, n = new WeakMap } return (_interopRequireWildcard = function(e, t) { if (!t && e && e.__esModule) { return e } var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) { return f } if (o = t ? n : r) { if (o.has(e)) { return o.get(e) } o.set(e, f) } for (const t in e) { "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]) } return f })(e, t) } const areaSeries = _area_series.chart.area; const chartSeries = scatterSeries.chart; const polarSeries = scatterSeries.polar; const _extend = _extend2.extend; const _each = _iterator.each; const chart = exports.chart = {}; const polar = exports.polar = {}; const baseBarSeriesMethods = { _createLegendState: (styleOptions, defaultColor) => ({ fill: (0, _utils.extractColor)(styleOptions.color) || defaultColor, hatching: styleOptions.hatching, filter: styleOptions.highlight }), _getColorId: areaSeries._getColorId, _parsePointStyle(style, defaultColor, defaultBorderColor) { const color = (0, _utils.extractColor)(style.color) || defaultColor; const base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor); base.fill = color; base.hatching = style.hatching; base.filter = style.highlight; base.dashStyle = style.border && style.border.dashStyle || "solid"; delete base.r; return base }, _applyMarkerClipRect(settings) { settings["clip-path"] = null }, _setGroupsSettings(animationEnabled, firstDrawing) { let settings = {}; chartSeries._setGroupsSettings.apply(this, arguments); if (animationEnabled && firstDrawing) { settings = this._getAffineCoordOptions() } else if (!animationEnabled) { settings = { scaleX: 1, scaleY: 1, translateX: 0, translateY: 0 } } this._markersGroup.attr(settings) }, _drawPoint(options) { options.hasAnimation = options.hasAnimation && !options.firstDrawing; options.firstDrawing = false; chartSeries._drawPoint.call(this, options) }, _getMainColor() { return this._options.mainSeriesColor }, _createPointStyles(pointOptions) { var _pointOptions$color; const that = this; const mainColor = (0, _utils.extractColor)(pointOptions.color, true) || that._getMainColor(); const colorId = null === (_pointOptions$color = pointOptions.color) || void 0 === _pointOptions$color ? void 0 : _pointOptions$color.fillId; const hoverStyle = pointOptions.hoverStyle || {}; const selectionStyle = pointOptions.selectionStyle || {}; if (colorId) { that._turnOffHatching(hoverStyle, selectionStyle) } return { labelColor: mainColor, normal: that._parsePointStyle(pointOptions, mainColor, mainColor), hover: that._parsePointStyle(hoverStyle, colorId || mainColor, mainColor), selection: that._parsePointStyle(selectionStyle, colorId || mainColor, mainColor) } }, _updatePointsVisibility() { const visibility = this._options.visible; (0, _iterator.each)(this._points, (_, point) => { point._options.visible = visibility }) }, _getOptionsForPoint() { return this._options }, _animate(firstDrawing) { const that = this; that._animatePoints(firstDrawing, function() { that._animateComplete() }, function(drawnPoints, complete) { const lastPointIndex = drawnPoints.length - 1; _each(drawnPoints || [], (i, point) => { point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords()) }) }) }, getValueRangeInitialValue: areaSeries.getValueRangeInitialValue, _patchMarginOptions(options) { var _this$getArgumentAxis; options.checkInterval = !this.useAggregation() || (null === (_this$getArgumentAxis = this.getArgumentAxis()) || void 0 === _this$getArgumentAxis ? void 0 : _this$getArgumentAxis.aggregatedPointBetweenTicks()); return options }, _defaultAggregator: "sum", _defineDrawingState() {}, usePointsToDefineAutoHiding: () => false }; chart.bar = _extend({}, chartSeries, baseBarSeriesMethods, { _getAffineCoordOptions() { const rotated = this._options.rotated; const direction = rotated ? "X" : "Y"; const settings = { scaleX: rotated ? .001 : 1, scaleY: rotated ? 1 : .001 }; settings[`translate${direction}`] = this.getValueAxis().getTranslator().translate("canvas_position_default"); return settings }, _animatePoints(firstDrawing, complete, animateFunc) { const that = this; that._markersGroup.animate({ scaleX: 1, scaleY: 1, translateY: 0, translateX: 0 }, void 0, complete); if (!firstDrawing) { animateFunc(that._drawnPoints, complete) } }, checkSeriesViewportCoord(axis, coord) { if (!chartSeries.checkSeriesViewportCoord.call(this)) { return false } if (axis.isArgumentAxis) { return true } const translator = axis.getTranslator(); const range = this.getViewport(); const min = translator.translate(range.categories ? range.categories[0] : range.min); const max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max); const rotated = this.getOptions().rotated; const inverted = axis.getOptions().inverted; return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min }, getSeriesPairCoord(coord, isArgument) { let oppositeCoord = null; const { rotated: rotated } = this._options; const isOpposite = !isArgument && !rotated || isArgument && rotated; const coordName = isOpposite ? "vy" : "vx"; const oppositeCoordName = isOpposite ? "vx" : "vy"; const points = this.getPoints(); for (let i = 0; i < points.length; i++) { const p = points[i]; let tmpCoord; if (isArgument) { tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0 } else { tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0 } if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) { oppositeCoord = tmpCoord; break } } return oppositeCoord } }); polar.bar = _extend({}, polarSeries, baseBarSeriesMethods, { _animatePoints(firstDrawing, complete, animateFunc) { animateFunc(this._drawnPoints, complete) }, _setGroupsSettings: chartSeries._setGroupsSettings, _drawPoint(point, groups, animationEnabled) { chartSeries._drawPoint.call(this, point, groups, animationEnabled) }, _parsePointStyle(style) { const base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments); base.opacity = style.opacity; return base }, _createGroups: chartSeries._createGroups, _setMarkerGroupSettings() { const markersSettings = this._createPointStyles(this._getMarkerGroupOptions()).normal; markersSettings.class = "dxc-markers"; this._applyMarkerClipRect(markersSettings); const groupSettings = _extend({}, markersSettings); delete groupSettings.opacity; this._markersGroup.attr(groupSettings) }, getSeriesPairCoord(params, isArgument) { let coords = null; const paramName = isArgument ? "argument" : "radius"; const points = this.getVisiblePoints(); const argAxis = this.getArgumentAxis(); const startAngle = argAxis.getAngles()[0]; for (let i = 0; i < points.length; i++) { const p = points[i]; const tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0; if ((0, _type.isDefined)(tmpPoint)) { coords = tmpPoint; break } } return coords }, _createLegendState: areaSeries._createLegendState });