constant_line.js 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * DevExtreme (viz/axes/constant_line.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. Object.defineProperty(exports, "__esModule", {
  11. value: true
  12. });
  13. exports.default = createConstantLine;
  14. var _type = require("../../core/utils/type");
  15. function createConstantLine(axis, options) {
  16. var labelOptions = options.label || {};
  17. var labelPosition = labelOptions.position || "inside";
  18. var parsedValue;
  19. var valueIsParsed = false;
  20. axis._checkAlignmentConstantLineLabels(labelOptions);
  21. var storedCoord;
  22. return {
  23. options: options,
  24. labelOptions: labelOptions,
  25. labelPosition: labelPosition,
  26. label: null,
  27. line: null,
  28. getParsedValue: function() {
  29. if (!valueIsParsed) {
  30. parsedValue = axis.validateUnit(options.value, "E2105", "constantLine");
  31. valueIsParsed = true;
  32. return parsedValue
  33. }
  34. return parsedValue
  35. },
  36. draw: function() {
  37. if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {
  38. return this
  39. }
  40. var canvas = axis._getCanvasStartEnd();
  41. var parsedValue = this.getParsedValue();
  42. this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);
  43. var rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;
  44. var group = rootGroup[labelPosition];
  45. if (!group) {
  46. var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;
  47. group = rootGroup[side]
  48. }
  49. if (!(0, _type.isDefined)(this.coord)) {
  50. return this
  51. }
  52. var path = axis._createConstantLine(this.coord, {
  53. stroke: options.color,
  54. "stroke-width": options.width,
  55. dashStyle: options.dashStyle
  56. });
  57. this.line = path.append(rootGroup.inside);
  58. this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;
  59. this.updatePosition();
  60. return this
  61. },
  62. removeLabel: function() {
  63. this.label && this.label.remove()
  64. },
  65. updatePosition: function(animate) {
  66. var canvas = axis._getCanvasStartEnd();
  67. var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);
  68. if (!(0, _type.isDefined)(coord)) {
  69. return
  70. }
  71. this.coord = coord;
  72. if (animate && storedCoord) {
  73. this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));
  74. this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));
  75. this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
  76. this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))
  77. } else {
  78. this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
  79. this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));
  80. axis._rotateConstantLine(this.line, this.coord)
  81. }
  82. },
  83. saveCoords: function() {
  84. storedCoord = this.coord
  85. }
  86. }
  87. }