devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
86 lines (84 loc) • 3.66 kB
JavaScript
/**
* DevExtreme (viz/axes/constant_line.js)
* Version: 18.2.18
* Build date: Tue Oct 18 2022
*
* Copyright (c) 2012 - 2022 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 = createConstantLine;
var _type = require("../../core/utils/type");
function createConstantLine(axis, options) {
var labelOptions = options.label || {};
var labelPosition = labelOptions.position || "inside";
var parsedValue = void 0;
var valueIsParsed = false;
axis._checkAlignmentConstantLineLabels(labelOptions);
var storedCoord = void 0;
return {
options: options,
labelOptions: labelOptions,
labelPosition: labelPosition,
label: null,
line: null,
getParsedValue: function() {
if (!valueIsParsed) {
parsedValue = axis._validateUnit(options.value, "E2105", "constantLine");
valueIsParsed = true;
return parsedValue
}
return parsedValue
},
draw: function() {
if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {
return this
}
var canvas = axis._getCanvasStartEnd();
var parsedValue = this.getParsedValue();
this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);
var group = axis._axisConstantLineGroups[labelPosition];
if (!group) {
var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;
group = axis._axisConstantLineGroups[side]
}
if (!(0, _type.isDefined)(this.coord)) {
return this
}
this.line = axis._createConstantLine(this.coord, {
stroke: options.color,
"stroke-width": options.width,
dashStyle: options.dashStyle
}).append(axis._axisConstantLineGroups.inside);
this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;
this.updatePosition();
return this
},
removeLabel: function() {
this.label && this.label.remove()
},
updatePosition: function(animate) {
var canvas = axis._getCanvasStartEnd();
var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);
if (!(0, _type.isDefined)(coord)) {
return
}
this.coord = coord;
if (animate && storedCoord) {
this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));
this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));
this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))
} else {
this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord))
}
},
saveCoords: function() {
storedCoord = this.coord
}
}
}