scichart 3.2.0-beta → 3.2.442

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/Builder/buildSurface.d.ts +2 -2
  2. package/Builder/chartBuilder.d.ts +4 -4
  3. package/Charting/ChartModifiers/ChartModifierBase.d.ts +5 -5
  4. package/Charting/ChartModifiers/ChartModifierBase.js +2 -3
  5. package/Charting/ChartModifiers/CursorModifier.d.ts +9 -9
  6. package/Charting/ChartModifiers/CursorModifier.js +1 -1
  7. package/Charting/ChartModifiers/DataPointSelectionModifier.d.ts +1 -0
  8. package/Charting/ChartModifiers/DataPointSelectionModifier.js +6 -1
  9. package/Charting/ChartModifiers/LegendModifier.d.ts +9 -24
  10. package/Charting/ChartModifiers/LegendModifier.js +9 -21
  11. package/Charting/ChartModifiers/MouseWheelZoomModifier.js +20 -11
  12. package/Charting/ChartModifiers/OverviewRangeSelectionModifier.d.ts +5 -5
  13. package/Charting/ChartModifiers/PinchZoomModifier.js +9 -9
  14. package/Charting/ChartModifiers/RubberBandXyZoomModifier.d.ts +4 -7
  15. package/Charting/ChartModifiers/RubberBandXyZoomModifier.js +6 -8
  16. package/Charting/ChartModifiers/SeriesSelectionModifier.js +10 -8
  17. package/Charting/ChartModifiers/XAxisDragModifier.d.ts +1 -1
  18. package/Charting/ChartModifiers/XAxisDragModifier.js +3 -3
  19. package/Charting/ChartModifiers/YAxisDragModifier.d.ts +2 -4
  20. package/Charting/ChartModifiers/YAxisDragModifier.js +7 -8
  21. package/Charting/Drawing/BaseCache.js +13 -8
  22. package/Charting/Model/BaseDataSeries.d.ts +2 -2
  23. package/Charting/Model/Filters/HlcFilterBase.d.ts +6 -2
  24. package/Charting/Model/Filters/HlcFilterBase.js +17 -1
  25. package/Charting/Model/Filters/IFilterBase.d.ts +24 -0
  26. package/Charting/Model/Filters/IFilterBase.js +2 -0
  27. package/Charting/Model/Filters/OhlcFilterBase.d.ts +6 -2
  28. package/Charting/Model/Filters/OhlcFilterBase.js +17 -1
  29. package/Charting/Model/Filters/XyFilterBase.d.ts +6 -5
  30. package/Charting/Model/Filters/XyFilterBase.js +17 -1
  31. package/Charting/Model/Filters/XyyFilterBase.d.ts +6 -2
  32. package/Charting/Model/Filters/XyyFilterBase.js +17 -1
  33. package/Charting/Model/Filters/XyzFilterBase.d.ts +6 -2
  34. package/Charting/Model/Filters/XyzFilterBase.js +17 -1
  35. package/Charting/Model/XyyDataSeries.js +15 -16
  36. package/Charting/Visuals/Annotations/CursorTooltipSvgAnnotation.js +0 -4
  37. package/Charting/Visuals/Annotations/NativeTextAnnotation.js +4 -0
  38. package/Charting/Visuals/Axis/AxisBase2D.d.ts +3 -3
  39. package/Charting/Visuals/Axis/AxisCore.d.ts +2 -2
  40. package/Charting/Visuals/Axis/DeltaCalculator/DateTimeDeltaCalculator.js +15 -1
  41. package/Charting/Visuals/Legend/ManualLegend.d.ts +57 -0
  42. package/Charting/Visuals/Legend/ManualLegend.js +150 -0
  43. package/Charting/Visuals/Legend/SciChartLegend.js +4 -3
  44. package/Charting/Visuals/Legend/SciChartLegendBase.d.ts +62 -3
  45. package/Charting/Visuals/Legend/SciChartLegendBase.js +70 -11
  46. package/Charting/Visuals/PointMarkers/BasePointMarker.js +13 -8
  47. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.d.ts +1 -1
  48. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.js +3 -3
  49. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.js +8 -3
  50. package/Charting/Visuals/RenderableSeries/DrawingProviders/BandSeriesDrawingProvider.js +6 -10
  51. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.d.ts +14 -3
  52. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.js +34 -10
  53. package/Charting/Visuals/RenderableSeries/DrawingProviders/BubbleSeriesDrawingProvider.js +3 -8
  54. package/Charting/Visuals/RenderableSeries/DrawingProviders/ColumnSeriesDrawingProvider.js +5 -10
  55. package/Charting/Visuals/RenderableSeries/DrawingProviders/LineSeriesDrawingProvider.js +5 -10
  56. package/Charting/Visuals/RenderableSeries/DrawingProviders/MountainSeriesDrawingProvider.js +5 -9
  57. package/Charting/Visuals/RenderableSeries/DrawingProviders/OhlcSeriesDrawingProvider.js +3 -8
  58. package/Charting/Visuals/RenderableSeries/DrawingProviders/PointMarkerDrawingProvider.js +5 -9
  59. package/Charting/Visuals/RenderableSeries/HoveredChangedArgs.d.ts +6 -1
  60. package/Charting/Visuals/RenderableSeries/HoveredChangedArgs.js +2 -1
  61. package/Charting/Visuals/RenderableSeries/IRenderableSeries.d.ts +1 -1
  62. package/Charting/Visuals/RenderableSeries/SelectionChangedArgs.d.ts +6 -1
  63. package/Charting/Visuals/RenderableSeries/SelectionChangedArgs.js +2 -1
  64. package/Charting/Visuals/RenderableSeries/SplineBandRenderableSeries.js +43 -1
  65. package/Charting/Visuals/RenderableSeries/SplineLineRenderableSeries.js +6 -1
  66. package/Charting/Visuals/RenderableSeries/SplineMountainRenderableSeries.js +6 -1
  67. package/Charting/Visuals/RubberBandSvgRect/RubberBandSvgRect.d.ts +4 -0
  68. package/Charting/Visuals/RubberBandSvgRect/RubberBandSvgRect.js +8 -2
  69. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.d.ts +6 -0
  70. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.js +7 -0
  71. package/Charting/Visuals/SciChartSurface.d.ts +0 -5
  72. package/Charting/Visuals/SciChartSurface.js +11 -12
  73. package/Charting/Visuals/SciChartSurfaceBase.d.ts +19 -1
  74. package/Charting/Visuals/SciChartSurfaceBase.js +45 -23
  75. package/Charting/Visuals/createMaster.d.ts +3 -0
  76. package/Charting/Visuals/createMaster.js +54 -23
  77. package/Charting/Visuals/createSingle.js +2 -2
  78. package/Charting/Visuals/licenseManager2D.js +9 -4
  79. package/Charting3D/ChartModifiers/ResetCamera3DModifier.d.ts +1 -1
  80. package/Charting3D/ChartModifiers/ResetCamera3DModifier.js +1 -2
  81. package/Charting3D/ChartModifiers/TooltipModifier3D.d.ts +35 -0
  82. package/Charting3D/ChartModifiers/TooltipModifier3D.js +41 -5
  83. package/Charting3D/Model/DataSeries/BaseGridDataSeries3D.d.ts +1 -1
  84. package/Charting3D/Model/DataSeries/BaseGridDataSeries3D.js +2 -2
  85. package/Charting3D/Model/DataSeries/IPointMetadata3D.d.ts +7 -2
  86. package/Charting3D/Visuals/Axis/AxisBase3D.d.ts +8 -1
  87. package/Charting3D/Visuals/Axis/AxisBase3D.js +0 -2
  88. package/Charting3D/Visuals/Axis/NumericAxis3D.d.ts +3 -2
  89. package/Charting3D/Visuals/Axis/NumericAxis3D.js +7 -3
  90. package/Charting3D/Visuals/Primitives/PointLine3DSceneEntity.js +4 -2
  91. package/Charting3D/Visuals/Primitives/ScatterPointsSceneEntity.js +5 -2
  92. package/Charting3D/Visuals/Primitives/SurfaceMeshSceneEntity.js +2 -1
  93. package/Charting3D/Visuals/RenderableSeries/BaseRenderableSeries3D.d.ts +5 -0
  94. package/Charting3D/Visuals/RenderableSeries/BaseRenderableSeries3D.js +19 -5
  95. package/Charting3D/Visuals/SciChart3DRenderer.d.ts +0 -1
  96. package/Charting3D/Visuals/SciChart3DRenderer.js +3 -26
  97. package/Charting3D/Visuals/SciChart3DSurface.d.ts +12 -5
  98. package/Charting3D/Visuals/SciChart3DSurface.js +35 -6
  99. package/Charting3D/Visuals/createMaster3d.js +9 -4
  100. package/Core/BuildStamp.d.ts +1 -1
  101. package/Core/BuildStamp.js +2 -2
  102. package/Core/DeletableEntity.d.ts +11 -5
  103. package/Core/DeletableEntity.js +42 -45
  104. package/Core/Mouse/MouseManager.js +6 -0
  105. package/Core/OneTimePerformanceWarning.d.ts +1 -1
  106. package/Core/OneTimePerformanceWarning.js +2 -1
  107. package/_wasm/scichart.browser.js +1 -1
  108. package/_wasm/scichart2d.js +1 -1
  109. package/_wasm/scichart2d.wasm +0 -0
  110. package/_wasm/scichart3d.js +1 -1
  111. package/_wasm/scichart3d.wasm +0 -0
  112. package/constants/performanceWarnings.d.ts +1 -0
  113. package/constants/performanceWarnings.js +2 -1
  114. package/index.d.ts +5 -6
  115. package/index.dev.js +68886 -0
  116. package/index.js +13 -21
  117. package/index.min.js +1 -1
  118. package/package.json +1 -1
  119. package/utils/MemoryUsageHelper.d.ts +55 -8
  120. package/utils/MemoryUsageHelper.js +64 -14
  121. package/utils/colorUtil.d.ts +7 -0
  122. package/utils/colorUtil.js +13 -1
  123. package/utils/parseColor.js +19 -4
@@ -21,7 +21,6 @@ var DragMode_1 = require("../../types/DragMode");
21
21
  var translate_1 = require("../../utils/translate");
22
22
  var AxisBase2D_1 = require("../Visuals/Axis/AxisBase2D");
23
23
  var ChartModifierBase2D_1 = require("./ChartModifierBase2D");
24
- var ChartModifierBase2D_2 = require("./ChartModifierBase2D");
25
24
  var Guard_1 = require("../../Core/Guard");
26
25
  var ChartModifierType_1 = require("../../types/ChartModifierType");
27
26
  /**
@@ -50,6 +49,7 @@ var XAxisDragModifier = /** @class */ (function (_super) {
50
49
  _this.dragMode = DragMode_1.EDragMode.Scaling;
51
50
  _this.isClickedOverXAxis = false;
52
51
  _this.isVerticalChart = false;
52
+ _this.cursorStyle = CursorStyle_1.ECursorStyle.Defalut;
53
53
  _this.includedSeriesMapProperty = new Map();
54
54
  _this.dragMode = (_a = options === null || options === void 0 ? void 0 : options.dragMode) !== null && _a !== void 0 ? _a : _this.dragMode;
55
55
  (_b = options === null || options === void 0 ? void 0 : options.excludedAxisIds) === null || _b === void 0 ? void 0 : _b.forEach(function (id) {
@@ -192,13 +192,13 @@ var XAxisDragModifier = /** @class */ (function (_super) {
192
192
  var yFromTrans = (0, translate_1.translateFromCanvasToSeriesViewRectY)(this.pointFrom.y, seriesViewRect);
193
193
  var isMoreThanHalf = yFromTrans >= seriesViewRect.height / 2;
194
194
  var yDelta = (pointTo.y - this.pointFrom.y) / seriesViewRect.width;
195
- (0, ChartModifierBase2D_2.scaleAxes)(this.activeAxes, this.initialVisibleRanges, yDelta, isMoreThanHalf);
195
+ (0, ChartModifierBase2D_1.scaleAxes)(this.activeAxes, this.initialVisibleRanges, yDelta, isMoreThanHalf);
196
196
  }
197
197
  else {
198
198
  var xFromTrans = (0, translate_1.translateFromCanvasToSeriesViewRectX)(this.pointFrom.x, seriesViewRect);
199
199
  var isMoreThanHalf = xFromTrans >= seriesViewRect.width / 2;
200
200
  var xDelta = (pointTo.x - this.pointFrom.x) / seriesViewRect.width;
201
- (0, ChartModifierBase2D_2.scaleAxes)(this.activeAxes, this.initialVisibleRanges, xDelta, isMoreThanHalf);
201
+ (0, ChartModifierBase2D_1.scaleAxes)(this.activeAxes, this.initialVisibleRanges, xDelta, isMoreThanHalf);
202
202
  }
203
203
  };
204
204
  XAxisDragModifier.prototype.getHorizontalXAxes = function () {
@@ -35,7 +35,7 @@ export declare class YAxisDragModifier extends ChartModifierBase2D implements II
35
35
  readonly type = EChart2DModifierType.YAxisDrag;
36
36
  dragMode: EDragMode;
37
37
  protected isClickedOverYAxis: boolean;
38
- protected pointFrom: Point;
38
+ protected pointFrom: Point | undefined;
39
39
  protected activeAxes: AxisBase2D[];
40
40
  protected initialVisibleRanges: NumberRange[];
41
41
  protected isVerticalChart: boolean;
@@ -72,9 +72,7 @@ export declare class YAxisDragModifier extends ChartModifierBase2D implements II
72
72
  */
73
73
  modifierMouseUp(args: ModifierMouseArgs): void;
74
74
  toJSON(): {
75
- type: string; /**
76
- * @inheritDoc
77
- */
75
+ type: string;
78
76
  options: Required<Omit<IChartModifierBaseOptions, never>>;
79
77
  };
80
78
  protected updateCursor(mousePoint: Point): void;
@@ -22,8 +22,6 @@ var DragMode_1 = require("../../types/DragMode");
22
22
  var translate_1 = require("../../utils/translate");
23
23
  var AxisBase2D_1 = require("../Visuals/Axis/AxisBase2D");
24
24
  var ChartModifierBase2D_1 = require("./ChartModifierBase2D");
25
- var ChartModifierBase2D_2 = require("./ChartModifierBase2D");
26
- var ChartModifierBase2D_3 = require("./ChartModifierBase2D");
27
25
  /**
28
26
  * The YAxisDragModifier provides scaling/panning behavior for Y axis {@link AxisBase2D}
29
27
  * within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
@@ -50,6 +48,7 @@ var YAxisDragModifier = /** @class */ (function (_super) {
50
48
  _this.dragMode = DragMode_1.EDragMode.Scaling;
51
49
  _this.isClickedOverYAxis = false;
52
50
  _this.isVerticalChart = false;
51
+ _this.cursorStyle = CursorStyle_1.ECursorStyle.Defalut;
53
52
  _this.includedSeriesMapProperty = new Map();
54
53
  _this.dragMode = (_a = options === null || options === void 0 ? void 0 : options.dragMode) !== null && _a !== void 0 ? _a : _this.dragMode;
55
54
  (_b = options === null || options === void 0 ? void 0 : options.excludedAxisIds) === null || _b === void 0 ? void 0 : _b.forEach(function (id) {
@@ -95,12 +94,12 @@ var YAxisDragModifier = /** @class */ (function (_super) {
95
94
  if (!this.isAttached) {
96
95
  throw new Error("Should not call YAxisDragModifier.modifierMouseDown if not attached");
97
96
  }
98
- if ((0, ChartModifierBase2D_2.testIsOverAxes)(this.getVerticalYAxes(), args.mousePoint)) {
97
+ if ((0, ChartModifierBase2D_1.testIsOverAxes)(this.getVerticalYAxes(), args.mousePoint)) {
99
98
  // Horizontal chart
100
99
  this.isVerticalChart = false;
101
100
  this.startDragging(this.getVerticalYAxes(), args);
102
101
  }
103
- else if ((0, ChartModifierBase2D_2.testIsOverAxes)(this.getHorizontalYAxes(), args.mousePoint)) {
102
+ else if ((0, ChartModifierBase2D_1.testIsOverAxes)(this.getHorizontalYAxes(), args.mousePoint)) {
104
103
  // Vertical chart
105
104
  this.isVerticalChart = true;
106
105
  this.startDragging(this.getHorizontalYAxes(), args);
@@ -148,13 +147,13 @@ var YAxisDragModifier = /** @class */ (function (_super) {
148
147
  };
149
148
  YAxisDragModifier.prototype.updateCursor = function (mousePoint) {
150
149
  var canvas = this.parentSurface.getMainCanvas();
151
- if ((0, ChartModifierBase2D_2.testIsOverAxes)(this.getVerticalYAxes(), mousePoint)) {
150
+ if ((0, ChartModifierBase2D_1.testIsOverAxes)(this.getVerticalYAxes(), mousePoint)) {
152
151
  if (this.cursorStyle !== CursorStyle_1.ECursorStyle.NS) {
153
152
  canvas.style.cursor = CursorStyle_1.ECursorStyle.NS;
154
153
  this.cursorStyle = CursorStyle_1.ECursorStyle.NS;
155
154
  }
156
155
  }
157
- else if ((0, ChartModifierBase2D_2.testIsOverAxes)(this.getHorizontalYAxes(), mousePoint)) {
156
+ else if ((0, ChartModifierBase2D_1.testIsOverAxes)(this.getHorizontalYAxes(), mousePoint)) {
158
157
  if (this.cursorStyle !== CursorStyle_1.ECursorStyle.EW) {
159
158
  canvas.style.cursor = CursorStyle_1.ECursorStyle.EW;
160
159
  this.cursorStyle = CursorStyle_1.ECursorStyle.EW;
@@ -191,13 +190,13 @@ var YAxisDragModifier = /** @class */ (function (_super) {
191
190
  var xFromTrans = (0, translate_1.translateFromCanvasToSeriesViewRectX)(this.pointFrom.x, seriesViewRect);
192
191
  var isMoreThanHalf = xFromTrans <= seriesViewRect.width / 2;
193
192
  var xDelta = -(pointTo.x - this.pointFrom.x) / seriesViewRect.width;
194
- (0, ChartModifierBase2D_3.scaleAxes)(this.activeAxes, this.initialVisibleRanges, xDelta, isMoreThanHalf);
193
+ (0, ChartModifierBase2D_1.scaleAxes)(this.activeAxes, this.initialVisibleRanges, xDelta, isMoreThanHalf);
195
194
  }
196
195
  else {
197
196
  var yFromTrans = (0, translate_1.translateFromCanvasToSeriesViewRectY)(this.pointFrom.y, seriesViewRect);
198
197
  var isMoreThanHalf = yFromTrans <= seriesViewRect.height / 2;
199
198
  var yDelta = -(pointTo.y - this.pointFrom.y) / seriesViewRect.height;
200
- (0, ChartModifierBase2D_3.scaleAxes)(this.activeAxes, this.initialVisibleRanges, yDelta, isMoreThanHalf);
199
+ (0, ChartModifierBase2D_1.scaleAxes)(this.activeAxes, this.initialVisibleRanges, yDelta, isMoreThanHalf);
201
200
  }
202
201
  };
203
202
  YAxisDragModifier.prototype.getVerticalYAxes = function () {
@@ -71,16 +71,21 @@ var BaseCache = /** @class */ (function (_super) {
71
71
  // if (this.webAssemblyContext) {
72
72
  // remove reference of the current instance to global collection of cached resources
73
73
  WebGlRenderContext2D_1.WebGlRenderContext2D.webGlResourcesRefs.delete(this);
74
- if (process.env.NODE_ENV !== "production") {
75
- // resolve memory debug issue when comparing to proxy object
76
- if (MemoryUsageHelper_1.MemoryUsageHelper.isMemoryUsageDebugEnabled) {
77
- WebGlRenderContext2D_1.WebGlRenderContext2D.webGlResourcesRefs.forEach(function (ref) {
78
- if (ref.resetCache === _this.resetCache) {
79
- WebGlRenderContext2D_1.WebGlRenderContext2D.webGlResourcesRefs.delete(ref);
80
- }
81
- });
74
+ try {
75
+ if (process.env.NODE_ENV !== "production") {
76
+ // resolve memory debug issue when comparing to proxy object
77
+ if (MemoryUsageHelper_1.MemoryUsageHelper.isMemoryUsageDebugEnabled) {
78
+ WebGlRenderContext2D_1.WebGlRenderContext2D.webGlResourcesRefs.forEach(function (ref) {
79
+ if (ref.resetCache === _this.resetCache) {
80
+ WebGlRenderContext2D_1.WebGlRenderContext2D.webGlResourcesRefs.delete(ref);
81
+ }
82
+ });
83
+ }
82
84
  }
83
85
  }
86
+ catch (err) {
87
+ console.warn(err);
88
+ }
84
89
  // }
85
90
  this.webAssemblyContext = undefined;
86
91
  };
@@ -49,8 +49,8 @@ export interface IBaseDataSeriesOptions {
49
49
  containsNaN?: boolean;
50
50
  /**
51
51
  * Set the maximum size of the dataSeries in FIFO (First In First Out) mode. This can only be set in the constructor options.
52
- * If set, the dataSeries supports only append, appendRange, update and clear. Any data that is appended once the dataSeries has reached fifoCapacity will cause
53
- * the oldest data to be discarded. This is a much more efficient than appending and removing for achieving scrolling data.
52
+ * If set, the dataSeries does not support insert/insertRange or remove/removeRange. Any data that is appended once the dataSeries has reached fifoCapacity will cause
53
+ * the oldest data to be discarded. This is much more efficient than appending and removing for achieving scrolling data.
54
54
  * Spline series and Stacked series currently do not support fifo mode.
55
55
  * To get the scrolling effect, you need to consider the behaviour of your X Axis. You can either
56
56
  * Use a {@link CategoryAxis}
@@ -2,18 +2,22 @@ import { SCRTDoubleVector } from "../../../types/TSciChart";
2
2
  import { BaseDataSeries } from "../BaseDataSeries";
3
3
  import { HlcDataSeries, IHlcDataSeriesOptions } from "../HlcDataSeries";
4
4
  import { IDataChangeArgs } from "../IDataSeries";
5
+ import { IFilterBase } from "./IFilterBase";
5
6
  import { EDataSeriesField } from "./XyFilterBase";
6
7
  export interface IHlcFilterOptions extends IHlcDataSeriesOptions {
7
8
  closefield?: EDataSeriesField;
8
9
  highfield?: EDataSeriesField;
9
10
  lowfield?: EDataSeriesField;
10
11
  }
11
- export declare abstract class HlcFilterBase extends HlcDataSeries {
12
+ export declare abstract class HlcFilterBase extends HlcDataSeries implements IFilterBase {
12
13
  readonly closefield: EDataSeriesField;
13
14
  readonly highfield: EDataSeriesField;
14
15
  readonly lowfield: EDataSeriesField;
15
- readonly originalSeries: BaseDataSeries;
16
+ protected originalSeriesProperty: BaseDataSeries;
16
17
  constructor(originalSeries: BaseDataSeries, options?: IHlcFilterOptions);
18
+ get originalSeries(): BaseDataSeries;
19
+ detachFromOriginalSeries(): void;
20
+ delete(): void;
17
21
  getOriginalXValues(): SCRTDoubleVector;
18
22
  getOriginalYValues(): SCRTDoubleVector;
19
23
  getOriginalHighValues(): SCRTDoubleVector;
@@ -16,6 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.HlcFilterBase = void 0;
19
+ var Deleter_1 = require("../../../Core/Deleter");
19
20
  var HlcDataSeries_1 = require("../HlcDataSeries");
20
21
  var IDataSeries_1 = require("../IDataSeries");
21
22
  var XyFilterBase_1 = require("./XyFilterBase");
@@ -28,7 +29,7 @@ var HlcFilterBase = /** @class */ (function (_super) {
28
29
  _this.closefield = XyFilterBase_1.EDataSeriesField.Close;
29
30
  _this.highfield = XyFilterBase_1.EDataSeriesField.High;
30
31
  _this.lowfield = XyFilterBase_1.EDataSeriesField.Low;
31
- _this.originalSeries = originalSeries;
32
+ _this.originalSeriesProperty = originalSeries;
32
33
  _this.closefield = (_a = options === null || options === void 0 ? void 0 : options.closefield) !== null && _a !== void 0 ? _a : _this.closefield;
33
34
  _this.highfield = (_b = options === null || options === void 0 ? void 0 : options.highfield) !== null && _b !== void 0 ? _b : _this.highfield;
34
35
  _this.onBaseDataChanged = _this.onBaseDataChanged.bind(_this);
@@ -81,6 +82,21 @@ var HlcFilterBase = /** @class */ (function (_super) {
81
82
  }
82
83
  return _this;
83
84
  }
85
+ Object.defineProperty(HlcFilterBase.prototype, "originalSeries", {
86
+ get: function () {
87
+ return this.originalSeriesProperty;
88
+ },
89
+ enumerable: false,
90
+ configurable: true
91
+ });
92
+ HlcFilterBase.prototype.detachFromOriginalSeries = function () {
93
+ this.originalSeries.dataChanged.unsubscribe(this.onBaseDataChanged);
94
+ this.originalSeriesProperty = undefined;
95
+ };
96
+ HlcFilterBase.prototype.delete = function () {
97
+ this.originalSeriesProperty = (0, Deleter_1.deleteSafe)(this.originalSeries);
98
+ _super.prototype.delete.call(this);
99
+ };
84
100
  HlcFilterBase.prototype.getOriginalXValues = function () {
85
101
  return this.originalSeries.getNativeXValues();
86
102
  };
@@ -0,0 +1,24 @@
1
+ import { IDeletable } from "../../../Core/IDeletable";
2
+ import { IDataSeries } from "../IDataSeries";
3
+ /**
4
+ * Defines the interface to a DataSeries in SciChart's High Performance Real-time
5
+ * {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
6
+ * @remarks
7
+ * A DataSeries stores the data to render. This is independent from the {@link IRenderableSeries | RenderableSeries}
8
+ * which defines how that data should be rendered.
9
+ *
10
+ * See derived types of {@link BaseDataSeries} to find out what data-series are available.
11
+ * See derived types of {@link IRenderableSeries} to find out what 2D JavaScript Chart types are available.
12
+ */
13
+ export interface IFilterBase extends IDeletable {
14
+ /**
15
+ * The {@link IDataSeries} to be filtered
16
+ */
17
+ readonly originalSeries: IDataSeries;
18
+ /**
19
+ * Removes reference to the original {@link IDataSeries} and prevents them from being deleted as an effect of the filter deletion.
20
+ * @remarks
21
+ * Makes the filter unusable, but allows deleting it separately from the original data series.
22
+ */
23
+ detachFromOriginalSeries(): void;
24
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -2,11 +2,15 @@ import { SCRTDoubleVector } from "../../../types/TSciChart";
2
2
  import { BaseDataSeries } from "../BaseDataSeries";
3
3
  import { IDataChangeArgs } from "../IDataSeries";
4
4
  import { IOhlcDataSeriesOptions, OhlcDataSeries } from "../OhlcDataSeries";
5
+ import { IFilterBase } from "./IFilterBase";
5
6
  export interface IOhlcFilterOptions extends IOhlcDataSeriesOptions {
6
7
  }
7
- export declare abstract class OhlcFilterBase extends OhlcDataSeries {
8
- readonly originalSeries: BaseDataSeries;
8
+ export declare abstract class OhlcFilterBase extends OhlcDataSeries implements IFilterBase {
9
+ protected originalSeriesProperty: BaseDataSeries;
9
10
  constructor(originalSeries: BaseDataSeries, options?: IOhlcFilterOptions);
11
+ get originalSeries(): BaseDataSeries;
12
+ detachFromOriginalSeries(): void;
13
+ delete(): void;
10
14
  getOriginalXValues(): SCRTDoubleVector;
11
15
  getOriginalCount(): number;
12
16
  protected abstract filterAll(): void;
@@ -16,17 +16,33 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.OhlcFilterBase = void 0;
19
+ var Deleter_1 = require("../../../Core/Deleter");
19
20
  var IDataSeries_1 = require("../IDataSeries");
20
21
  var OhlcDataSeries_1 = require("../OhlcDataSeries");
21
22
  var OhlcFilterBase = /** @class */ (function (_super) {
22
23
  __extends(OhlcFilterBase, _super);
23
24
  function OhlcFilterBase(originalSeries, options) {
24
25
  var _this = _super.call(this, originalSeries.webAssemblyContext, options) || this;
25
- _this.originalSeries = originalSeries;
26
+ _this.originalSeriesProperty = originalSeries;
26
27
  _this.onBaseDataChanged = _this.onBaseDataChanged.bind(_this);
27
28
  originalSeries.dataChanged.subscribe(_this.onBaseDataChanged);
28
29
  return _this;
29
30
  }
31
+ Object.defineProperty(OhlcFilterBase.prototype, "originalSeries", {
32
+ get: function () {
33
+ return this.originalSeriesProperty;
34
+ },
35
+ enumerable: false,
36
+ configurable: true
37
+ });
38
+ OhlcFilterBase.prototype.detachFromOriginalSeries = function () {
39
+ this.originalSeries.dataChanged.unsubscribe(this.onBaseDataChanged);
40
+ this.originalSeriesProperty = undefined;
41
+ };
42
+ OhlcFilterBase.prototype.delete = function () {
43
+ this.originalSeriesProperty = (0, Deleter_1.deleteSafe)(this.originalSeries);
44
+ _super.prototype.delete.call(this);
45
+ };
30
46
  OhlcFilterBase.prototype.getOriginalXValues = function () {
31
47
  return this.originalSeries.getNativeXValues();
32
48
  };
@@ -6,6 +6,7 @@ import { OhlcDataSeries } from "../OhlcDataSeries";
6
6
  import { IXyDataSeriesOptions, XyDataSeries } from "../XyDataSeries";
7
7
  import { XyyDataSeries } from "../XyyDataSeries";
8
8
  import { XyzDataSeries } from "../XyzDataSeries";
9
+ import { IFilterBase } from "./IFilterBase";
9
10
  export declare enum EDataSeriesField {
10
11
  X = "x",
11
12
  Open = "open",
@@ -38,11 +39,7 @@ export interface IXyFilterOptions extends IXyDataSeriesOptions {
38
39
  * To create a filter it is only necessary to implement filterAll, and onClear,
39
40
  * but if possible you should override filterOnAppend, filterOnUpdate, filterOnInsert and filterOnRemove
40
41
  */
41
- export declare abstract class XyFilterBase extends XyDataSeries {
42
- /**
43
- * The {@link BaseDataSeries} to be filtered
44
- */
45
- readonly originalSeries: BaseDataSeries;
42
+ export declare abstract class XyFilterBase extends XyDataSeries implements IFilterBase {
46
43
  /**
47
44
  * The field that will be returned by getOriginalYValues.
48
45
  */
@@ -51,12 +48,16 @@ export declare abstract class XyFilterBase extends XyDataSeries {
51
48
  * The field that will be returned by getOriginalYValues.
52
49
  */
53
50
  readonly xField: EDataSeriesField;
51
+ protected originalSeriesProperty: BaseDataSeries;
54
52
  /**
55
53
  * Creates an instance of {@link XyFilterBase}
56
54
  * @param originalSeries the {@link BaseDataSeries} to be filtered
57
55
  * @param options the {@link IXyFilterOptions} which can be passed to configure the Filter at construct time
58
56
  */
59
57
  constructor(originalSeries: BaseDataSeries, options?: IXyFilterOptions);
58
+ get originalSeries(): BaseDataSeries;
59
+ detachFromOriginalSeries(): void;
60
+ delete(): void;
60
61
  /**
61
62
  * Get the X values of the original series
62
63
  */
@@ -16,6 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.switchData = exports.XyFilterBase = exports.EDataSeriesField = void 0;
19
+ var Deleter_1 = require("../../../Core/Deleter");
19
20
  var IDataSeries_1 = require("../IDataSeries");
20
21
  var XyDataSeries_1 = require("../XyDataSeries");
21
22
  var EDataSeriesField;
@@ -57,7 +58,7 @@ var XyFilterBase = /** @class */ (function (_super) {
57
58
  * The field that will be returned by getOriginalYValues.
58
59
  */
59
60
  _this.xField = EDataSeriesField.X;
60
- _this.originalSeries = originalSeries;
61
+ _this.originalSeriesProperty = originalSeries;
61
62
  _this.field = (_a = options === null || options === void 0 ? void 0 : options.field) !== null && _a !== void 0 ? _a : _this.field;
62
63
  _this.xField = (_b = options === null || options === void 0 ? void 0 : options.xField) !== null && _b !== void 0 ? _b : _this.xField;
63
64
  _this.onBaseDataChanged = _this.onBaseDataChanged.bind(_this);
@@ -102,6 +103,21 @@ var XyFilterBase = /** @class */ (function (_super) {
102
103
  }
103
104
  return _this;
104
105
  }
106
+ Object.defineProperty(XyFilterBase.prototype, "originalSeries", {
107
+ get: function () {
108
+ return this.originalSeriesProperty;
109
+ },
110
+ enumerable: false,
111
+ configurable: true
112
+ });
113
+ XyFilterBase.prototype.detachFromOriginalSeries = function () {
114
+ this.originalSeries.dataChanged.unsubscribe(this.onBaseDataChanged);
115
+ this.originalSeriesProperty = undefined;
116
+ };
117
+ XyFilterBase.prototype.delete = function () {
118
+ this.originalSeriesProperty = (0, Deleter_1.deleteSafe)(this.originalSeries);
119
+ _super.prototype.delete.call(this);
120
+ };
105
121
  /**
106
122
  * Get the X values of the original series
107
123
  */
@@ -2,16 +2,20 @@ import { SCRTDoubleVector } from "../../../types/TSciChart";
2
2
  import { BaseDataSeries } from "../BaseDataSeries";
3
3
  import { IDataChangeArgs } from "../IDataSeries";
4
4
  import { IXyyDataSeriesOptions, XyyDataSeries } from "../XyyDataSeries";
5
+ import { IFilterBase } from "./IFilterBase";
5
6
  import { EDataSeriesField } from "./XyFilterBase";
6
7
  export interface IXyyFilterOptions extends IXyyDataSeriesOptions {
7
8
  yfield?: EDataSeriesField;
8
9
  y1field?: EDataSeriesField;
9
10
  }
10
- export declare abstract class XyyFilterBase extends XyyDataSeries {
11
+ export declare abstract class XyyFilterBase extends XyyDataSeries implements IFilterBase {
11
12
  readonly yfield: EDataSeriesField;
12
13
  readonly y1field: EDataSeriesField;
13
- readonly originalSeries: BaseDataSeries;
14
+ protected originalSeriesProperty: BaseDataSeries;
14
15
  constructor(originalSeries: BaseDataSeries, options?: IXyyFilterOptions);
16
+ get originalSeries(): BaseDataSeries;
17
+ detachFromOriginalSeries(): void;
18
+ delete(): void;
15
19
  getOriginalXValues(): SCRTDoubleVector;
16
20
  getOriginalYValues(): SCRTDoubleVector;
17
21
  getOriginalY1Values(): SCRTDoubleVector;
@@ -16,6 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.XyyFilterBase = void 0;
19
+ var Deleter_1 = require("../../../Core/Deleter");
19
20
  var IDataSeries_1 = require("../IDataSeries");
20
21
  var XyyDataSeries_1 = require("../XyyDataSeries");
21
22
  var XyFilterBase_1 = require("./XyFilterBase");
@@ -27,7 +28,7 @@ var XyyFilterBase = /** @class */ (function (_super) {
27
28
  _this = _super.call(this, originalSeries.webAssemblyContext, options) || this;
28
29
  _this.yfield = XyFilterBase_1.EDataSeriesField.Y;
29
30
  _this.y1field = XyFilterBase_1.EDataSeriesField.Y1;
30
- _this.originalSeries = originalSeries;
31
+ _this.originalSeriesProperty = originalSeries;
31
32
  _this.yfield = (_a = options === null || options === void 0 ? void 0 : options.yfield) !== null && _a !== void 0 ? _a : _this.yfield;
32
33
  _this.yfield = (_b = options === null || options === void 0 ? void 0 : options.yfield) !== null && _b !== void 0 ? _b : _this.yfield;
33
34
  _this.onBaseDataChanged = _this.onBaseDataChanged.bind(_this);
@@ -70,6 +71,21 @@ var XyyFilterBase = /** @class */ (function (_super) {
70
71
  }
71
72
  return _this;
72
73
  }
74
+ Object.defineProperty(XyyFilterBase.prototype, "originalSeries", {
75
+ get: function () {
76
+ return this.originalSeriesProperty;
77
+ },
78
+ enumerable: false,
79
+ configurable: true
80
+ });
81
+ XyyFilterBase.prototype.detachFromOriginalSeries = function () {
82
+ this.originalSeries.dataChanged.unsubscribe(this.onBaseDataChanged);
83
+ this.originalSeriesProperty = undefined;
84
+ };
85
+ XyyFilterBase.prototype.delete = function () {
86
+ this.originalSeriesProperty = (0, Deleter_1.deleteSafe)(this.originalSeries);
87
+ _super.prototype.delete.call(this);
88
+ };
73
89
  XyyFilterBase.prototype.getOriginalXValues = function () {
74
90
  return this.originalSeries.getNativeXValues();
75
91
  };
@@ -2,16 +2,20 @@ import { SCRTDoubleVector } from "../../../types/TSciChart";
2
2
  import { BaseDataSeries } from "../BaseDataSeries";
3
3
  import { IDataChangeArgs } from "../IDataSeries";
4
4
  import { IXyzDataSeriesOptions, XyzDataSeries } from "../XyzDataSeries";
5
+ import { IFilterBase } from "./IFilterBase";
5
6
  import { EDataSeriesField } from "./XyFilterBase";
6
7
  export interface IXyzFilterOptions extends IXyzDataSeriesOptions {
7
8
  yfield?: EDataSeriesField;
8
9
  zfield?: EDataSeriesField;
9
10
  }
10
- export declare abstract class XyzFilterBase extends XyzDataSeries {
11
+ export declare abstract class XyzFilterBase extends XyzDataSeries implements IFilterBase {
11
12
  readonly yfield: EDataSeriesField;
12
13
  readonly zfield: EDataSeriesField;
13
- readonly originalSeries: BaseDataSeries;
14
+ protected originalSeriesProperty: BaseDataSeries;
14
15
  constructor(originalSeries: BaseDataSeries, options?: IXyzFilterOptions);
16
+ get originalSeries(): BaseDataSeries;
17
+ detachFromOriginalSeries(): void;
18
+ delete(): void;
15
19
  getOriginalXValues(): SCRTDoubleVector;
16
20
  getOriginalYValues(): SCRTDoubleVector;
17
21
  getOriginalZValues(): SCRTDoubleVector;
@@ -16,6 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.XyzFilterBase = void 0;
19
+ var Deleter_1 = require("../../../Core/Deleter");
19
20
  var IDataSeries_1 = require("../IDataSeries");
20
21
  var XyzDataSeries_1 = require("../XyzDataSeries");
21
22
  var XyFilterBase_1 = require("./XyFilterBase");
@@ -27,7 +28,7 @@ var XyzFilterBase = /** @class */ (function (_super) {
27
28
  _this = _super.call(this, originalSeries.webAssemblyContext, options) || this;
28
29
  _this.yfield = XyFilterBase_1.EDataSeriesField.Y;
29
30
  _this.zfield = XyFilterBase_1.EDataSeriesField.Z;
30
- _this.originalSeries = originalSeries;
31
+ _this.originalSeriesProperty = originalSeries;
31
32
  _this.yfield = (_a = options === null || options === void 0 ? void 0 : options.yfield) !== null && _a !== void 0 ? _a : _this.yfield;
32
33
  _this.zfield = (_b = options === null || options === void 0 ? void 0 : options.zfield) !== null && _b !== void 0 ? _b : _this.zfield;
33
34
  _this.onBaseDataChanged = _this.onBaseDataChanged.bind(_this);
@@ -70,6 +71,21 @@ var XyzFilterBase = /** @class */ (function (_super) {
70
71
  }
71
72
  return _this;
72
73
  }
74
+ Object.defineProperty(XyzFilterBase.prototype, "originalSeries", {
75
+ get: function () {
76
+ return this.originalSeriesProperty;
77
+ },
78
+ enumerable: false,
79
+ configurable: true
80
+ });
81
+ XyzFilterBase.prototype.detachFromOriginalSeries = function () {
82
+ this.originalSeries.dataChanged.unsubscribe(this.onBaseDataChanged);
83
+ this.originalSeriesProperty = undefined;
84
+ };
85
+ XyzFilterBase.prototype.delete = function () {
86
+ this.originalSeriesProperty = (0, Deleter_1.deleteSafe)(this.originalSeries);
87
+ _super.prototype.delete.call(this);
88
+ };
73
89
  XyzFilterBase.prototype.getOriginalXValues = function () {
74
90
  return this.originalSeries.getNativeXValues();
75
91
  };
@@ -21,6 +21,7 @@ var Guard_1 = require("../../Core/Guard");
21
21
  var NumberRange_1 = require("../../Core/NumberRange");
22
22
  var NumberArray_1 = require("../../types/NumberArray");
23
23
  var appendDoubleVectorFromJsArray_1 = require("../../utils/ccall/appendDoubleVectorFromJsArray");
24
+ var isRealNumber_1 = require("../../utils/isRealNumber");
24
25
  var animationHelpers_1 = require("../Visuals/RenderableSeries/Animations/animationHelpers");
25
26
  var BaseDataSeries_1 = require("./BaseDataSeries");
26
27
  var IDataSeries_1 = require("./IDataSeries");
@@ -300,30 +301,28 @@ var XyyDataSeries = /** @class */ (function (_super) {
300
301
  return new NumberRange_1.NumberRange(min, max);
301
302
  }
302
303
  var indicesRange = isXCategoryAxis ? xRange : this.getIndicesRange(xRange);
303
- var yMin = Number.MAX_VALUE;
304
- var yMax = Number.MIN_VALUE;
305
304
  var iMin = Math.max(Math.floor(indicesRange.min), 0);
306
305
  var iMax = Math.min(Math.ceil(indicesRange.max), this.count() - 1);
307
306
  if (iMax < iMin) {
308
307
  return undefined;
309
308
  }
310
- for (var i = iMin; i <= iMax; i++) {
311
- var yVal = yValues.get(i);
312
- if (yVal < yMin) {
313
- yMin = yVal;
309
+ var minMax;
310
+ var minMaxy1;
311
+ try {
312
+ minMax = this.webAssemblyContext.NumberUtil.MinMaxWithIndex(yValues, iMin, iMax - iMin + 1);
313
+ if (!(0, isRealNumber_1.isRealNumber)(minMax.minD) || !(0, isRealNumber_1.isRealNumber)(minMax.maxD)) {
314
+ return undefined;
314
315
  }
315
- if (yVal > yMax) {
316
- yMax = yVal;
317
- }
318
- var y1Val = y1Values.get(i);
319
- if (y1Val < yMin) {
320
- yMin = y1Val;
321
- }
322
- if (y1Val > yMax) {
323
- yMax = y1Val;
316
+ minMaxy1 = this.webAssemblyContext.NumberUtil.MinMaxWithIndex(y1Values, iMin, iMax - iMin + 1);
317
+ if (!(0, isRealNumber_1.isRealNumber)(minMaxy1.minD) || !(0, isRealNumber_1.isRealNumber)(minMaxy1.maxD)) {
318
+ return undefined;
324
319
  }
320
+ return new NumberRange_1.NumberRange(Math.min(minMax.minD, minMaxy1.minD), Math.max(minMax.maxD, minMaxy1.maxD));
321
+ }
322
+ finally {
323
+ (0, Deleter_1.deleteSafe)(minMax);
324
+ (0, Deleter_1.deleteSafe)(minMaxy1);
325
325
  }
326
- return new NumberRange_1.NumberRange(yMin, yMax);
327
326
  };
328
327
  /** @inheritDoc */
329
328
  XyyDataSeries.prototype.delete = function () {
@@ -78,10 +78,6 @@ var CursorTooltipSvgAnnotation = /** @class */ (function (_super) {
78
78
  this.notifyPropertyChanged(constants_1.PROPERTY.SERIES_INFOS);
79
79
  }
80
80
  }
81
- else {
82
- this.seriesInfosProperty = newSeriesInfos;
83
- this.notifyPropertyChanged(constants_1.PROPERTY.SERIES_INFOS);
84
- }
85
81
  },
86
82
  enumerable: false,
87
83
  configurable: true
@@ -407,6 +407,10 @@ var NativeTextAnnotation = /** @class */ (function (_super) {
407
407
  if (scaleChanged) {
408
408
  font.SetScale(oldScale);
409
409
  }
410
+ if (this.annotationLayer !== IAnnotation_1.EAnnotationLayer.AboveChart) {
411
+ // If the annotation needs to be drawn below anything, draw it now, as by default fonts are all ended at the end of the render cycle
412
+ font.End();
413
+ }
410
414
  this.updateAdornerInner();
411
415
  };
412
416
  NativeTextAnnotation.prototype.onDragStarted = function (args) {
@@ -263,14 +263,14 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
263
263
  * Stacked axes without a defined length will have the remaining unreserved spaced split between them.
264
264
  * @remarks The axis length doesn't include border sizes
265
265
  */
266
- get stackedAxisLength(): TStackedAxisLength;
266
+ get stackedAxisLength(): TStackedAxisLength | undefined;
267
267
  /** Gets or sets the length of a stacked axis as an absolute number or percentage, e.g. 100, or "30%".
268
268
  * A plain number will be interpreted as a number of pixels.
269
269
  * A number with % will take that percentage of the total length.
270
270
  * Stacked axes without a defined length will have the remaining unreserved spaced split between them.
271
271
  * @remarks The axis length doesn't include border sizes
272
272
  */
273
- set stackedAxisLength(value: TStackedAxisLength);
273
+ set stackedAxisLength(value: TStackedAxisLength | undefined);
274
274
  /**
275
275
  * Called internally - Gets or sets the length the current Axis. E.g. width of horizontal axis or height of vertical axis.
276
276
  */
@@ -425,7 +425,7 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
425
425
  * @param xRanges (optional) if provided, we use previously calculated XAxis ranges
426
426
  * keyed by AxisId rather than calculate them again
427
427
  */
428
- getWindowedYRange(xRanges: Dictionary<NumberRange>): NumberRange;
428
+ getWindowedYRange(xRanges: Dictionary<NumberRange> | undefined): NumberRange;
429
429
  /**
430
430
  * Programmatically scrolls the axis by a number of pixels
431
431
  * @param pixelsToScroll The number of pixels to scroll
@@ -165,7 +165,7 @@ export declare abstract class AxisCore extends DeletableEntity implements IAxisP
165
165
  /**
166
166
  * Internal backing property for {@link AxisCore.growBy}. To fire {@link AxisCore.invalidateParentCallback}, set the public property
167
167
  */
168
- protected growByProperty: NumberRange;
168
+ protected growByProperty: NumberRange | undefined;
169
169
  /**
170
170
  * Internal backing property for {@link AxisCore.visibleRange}. To fire {@link AxisCore.invalidateParentCallback}, set the public property
171
171
  */
@@ -398,7 +398,7 @@ export declare abstract class AxisCore extends DeletableEntity implements IAxisP
398
398
  * axis.growBy = new NumberRange(0.1, 0.2);
399
399
  * ```
400
400
  */
401
- set growBy(growBy: NumberRange);
401
+ set growBy(growBy: NumberRange | undefined);
402
402
  /**
403
403
  * The VisibleRange is the range of the Axis (min to max).
404
404
  * @description