devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
249 lines (247 loc) • 10.1 kB
JavaScript
/**
* 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/
*/
;
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
});