stream-charts 1.0.1 → 1.1.1
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.
- package/README.md +757 -342
- package/changes.md +11 -0
- package/dist/src/app/charts/Chart.d.ts +116 -87
- package/dist/src/app/charts/Chart.js +96 -101
- package/dist/src/app/charts/Chart.js.map +1 -1
- package/dist/src/app/charts/axes/AxesState.d.ts +64 -0
- package/dist/src/app/charts/axes/AxesState.js +97 -0
- package/dist/src/app/charts/axes/AxesState.js.map +1 -0
- package/dist/src/app/charts/axes/AxesState.test.js +30 -0
- package/dist/src/app/charts/axes/AxesState.test.js.map +1 -0
- package/dist/src/app/charts/axes/AxisInterval.d.ts +92 -0
- package/dist/src/app/charts/axes/AxisInterval.js +126 -0
- package/dist/src/app/charts/axes/AxisInterval.js.map +1 -0
- package/dist/src/app/charts/axes/AxisInterval.test.js +120 -0
- package/dist/src/app/charts/axes/AxisInterval.test.js.map +1 -0
- package/dist/src/app/charts/axes/BaseAxisRange.d.ts +83 -0
- package/dist/src/app/charts/axes/BaseAxisRange.js +58 -0
- package/dist/src/app/charts/axes/BaseAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxis.d.ts +22 -0
- package/dist/src/app/charts/axes/ContinuousAxis.js +96 -0
- package/dist/src/app/charts/axes/ContinuousAxis.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.d.ts +59 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.js +84 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.test.js +47 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.test.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxis.d.ts +23 -0
- package/dist/src/app/charts/axes/OrdinalAxis.js +124 -0
- package/dist/src/app/charts/axes/OrdinalAxis.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.d.ts +69 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.js +100 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.test.js +48 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.test.js.map +1 -0
- package/dist/src/app/charts/axes/axes.d.ts +391 -0
- package/dist/src/app/charts/axes/axes.js +1046 -0
- package/dist/src/app/charts/axes/axes.js.map +1 -0
- package/dist/src/app/charts/d3types.d.ts +10 -10
- package/dist/src/app/charts/filters/regexFilter.d.ts +9 -0
- package/dist/src/app/charts/filters/regexFilter.js +18 -0
- package/dist/src/app/charts/filters/regexFilter.js.map +1 -0
- package/dist/src/app/charts/filters/regexFilter.test.d.ts +1 -0
- package/dist/src/app/charts/filters/regexFilter.test.js +11 -0
- package/dist/src/app/charts/filters/regexFilter.test.js.map +1 -0
- package/dist/src/app/charts/hooks/useAxes.d.ts +144 -0
- package/dist/src/app/charts/hooks/useAxes.js +187 -0
- package/dist/src/app/charts/hooks/useAxes.js.map +1 -0
- package/dist/src/app/charts/hooks/useChart.d.ts +30 -201
- package/dist/src/app/charts/hooks/useChart.js +33 -134
- package/dist/src/app/charts/hooks/useChart.js.map +1 -1
- package/dist/src/app/charts/hooks/useDataObservable.d.ts +74 -0
- package/dist/src/app/charts/hooks/useDataObservable.js +76 -0
- package/dist/src/app/charts/hooks/useDataObservable.js.map +1 -0
- package/dist/src/app/charts/hooks/useInitialData.d.ts +38 -0
- package/dist/src/app/charts/hooks/useInitialData.js +29 -0
- package/dist/src/app/charts/hooks/useInitialData.js.map +1 -0
- package/dist/src/app/charts/hooks/useMouse.d.ts +53 -0
- package/dist/src/app/charts/hooks/useMouse.js +65 -0
- package/dist/src/app/charts/hooks/useMouse.js.map +1 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.d.ts +34 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.js +73 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.js.map +1 -0
- package/dist/src/app/charts/hooks/useTooltip.d.ts +64 -0
- package/dist/src/app/charts/hooks/useTooltip.js +52 -0
- package/dist/src/app/charts/hooks/useTooltip.js.map +1 -0
- package/dist/src/app/charts/observables/ChartData.d.ts +23 -0
- package/dist/src/app/charts/observables/ChartData.js +20 -0
- package/dist/src/app/charts/observables/ChartData.js.map +1 -0
- package/dist/src/app/charts/observables/iterates.d.ts +52 -0
- package/dist/src/app/charts/observables/iterates.js +121 -0
- package/dist/src/app/charts/observables/iterates.js.map +1 -0
- package/dist/src/app/charts/observables/iterates.test.d.ts +1 -0
- package/dist/src/app/charts/observables/iterates.test.js +180 -0
- package/dist/src/app/charts/observables/iterates.test.js.map +1 -0
- package/dist/src/app/charts/observables/ordinals.d.ts +75 -0
- package/dist/src/app/charts/observables/ordinals.js +141 -0
- package/dist/src/app/charts/observables/ordinals.js.map +1 -0
- package/dist/src/app/charts/observables/ordinals.test.d.ts +1 -0
- package/dist/src/app/charts/observables/ordinals.test.js +102 -0
- package/dist/src/app/charts/observables/ordinals.test.js.map +1 -0
- package/dist/src/app/charts/plots/BarPlot.d.ts +81 -0
- package/dist/src/app/charts/plots/BarPlot.js +557 -0
- package/dist/src/app/charts/plots/BarPlot.js.map +1 -0
- package/dist/src/app/charts/plots/PoincarePlot.d.ts +78 -0
- package/dist/src/app/charts/plots/PoincarePlot.js +504 -0
- package/dist/src/app/charts/plots/PoincarePlot.js.map +1 -0
- package/dist/src/app/charts/{RasterPlot.d.ts → plots/RasterPlot.d.ts} +1 -1
- package/dist/src/app/charts/{RasterPlot.js → plots/RasterPlot.js} +152 -133
- package/dist/src/app/charts/plots/RasterPlot.js.map +1 -0
- package/dist/src/app/charts/{ScatterPlot.d.ts → plots/ScatterPlot.d.ts} +10 -8
- package/dist/src/app/charts/plots/ScatterPlot.js +379 -0
- package/dist/src/app/charts/plots/ScatterPlot.js.map +1 -0
- package/dist/src/app/charts/{plot.d.ts → plots/plot.d.ts} +12 -14
- package/dist/src/app/charts/{plot.js → plots/plot.js} +19 -17
- package/dist/src/app/charts/plots/plot.js.map +1 -0
- package/dist/src/app/charts/series/baseSeries.d.ts +38 -0
- package/dist/src/app/charts/series/baseSeries.js +36 -0
- package/dist/src/app/charts/series/baseSeries.js.map +1 -0
- package/dist/src/app/charts/series/datumSeries.test.d.ts +1 -0
- package/dist/src/app/charts/series/datumSeries.test.js +50 -0
- package/dist/src/app/charts/series/datumSeries.test.js.map +1 -0
- package/dist/src/app/charts/series/iterateSeries.d.ts +42 -0
- package/dist/src/app/charts/series/iterateSeries.js +34 -0
- package/dist/src/app/charts/series/iterateSeries.js.map +1 -0
- package/dist/src/app/charts/series/ordinalSeries.d.ts +54 -0
- package/dist/src/app/charts/series/ordinalSeries.js +98 -0
- package/dist/src/app/charts/series/ordinalSeries.js.map +1 -0
- package/dist/src/app/charts/series/timeSeries.d.ts +30 -0
- package/dist/src/app/charts/series/timeSeries.js +19 -0
- package/dist/src/app/charts/series/timeSeries.js.map +1 -0
- package/dist/src/app/charts/{chartData.d.ts → series/timeSeriesChartData.d.ts} +11 -6
- package/dist/src/app/charts/series/timeSeriesChartData.js +32 -0
- package/dist/src/app/charts/series/timeSeriesChartData.js.map +1 -0
- package/dist/src/app/charts/styling/barPlotStyle.d.ts +41 -0
- package/dist/src/app/charts/styling/barPlotStyle.js +84 -0
- package/dist/src/app/charts/styling/barPlotStyle.js.map +1 -0
- package/dist/src/app/charts/{margins.d.ts → styling/margins.d.ts} +7 -5
- package/dist/src/app/charts/{margins.js → styling/margins.js} +19 -9
- package/dist/src/app/charts/styling/margins.js.map +1 -0
- package/dist/src/app/charts/styling/margins.test.d.ts +1 -0
- package/dist/src/app/charts/styling/margins.test.js +19 -0
- package/dist/src/app/charts/styling/margins.test.js.map +1 -0
- package/dist/src/app/charts/styling/svgStyle.d.ts +76 -0
- package/dist/src/app/charts/styling/svgStyle.js +84 -0
- package/dist/src/app/charts/styling/svgStyle.js.map +1 -0
- package/dist/src/app/charts/subscriptions/subscription.test.d.ts +1 -0
- package/dist/src/app/charts/subscriptions/subscription.test.js +395 -0
- package/dist/src/app/charts/subscriptions/subscription.test.js.map +1 -0
- package/dist/src/app/charts/subscriptions/subscriptions.d.ts +100 -0
- package/dist/src/app/charts/subscriptions/subscriptions.js +449 -0
- package/dist/src/app/charts/subscriptions/subscriptions.js.map +1 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.d.ts +90 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js +302 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +100 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js +190 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/{RasterPlotTooltipContent.js → tooltips/RasterPlotTooltipContent.js} +40 -44
- package/dist/src/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js +154 -0
- package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/{Tooltip.d.ts → tooltips/Tooltip.d.ts} +4 -2
- package/dist/src/app/charts/{Tooltip.js → tooltips/Tooltip.js} +23 -28
- package/dist/src/app/charts/tooltips/Tooltip.js.map +1 -0
- package/dist/src/app/charts/{tooltipUtils.d.ts → tooltips/tooltipUtils.d.ts} +11 -6
- package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +33 -17
- package/dist/src/app/charts/tooltips/tooltipUtils.js.map +1 -0
- package/dist/src/app/charts/{Tracker.d.ts → trackers/Tracker.d.ts} +6 -5
- package/dist/src/app/charts/trackers/Tracker.js +60 -0
- package/dist/src/app/charts/trackers/Tracker.js.map +1 -0
- package/dist/src/app/charts/{trackerUtils.d.ts → trackers/trackerUtils.d.ts} +13 -8
- package/dist/src/app/charts/trackers/trackerUtils.js +359 -0
- package/dist/src/app/charts/trackers/trackerUtils.js.map +1 -0
- package/dist/src/app/charts/utils.d.ts +22 -32
- package/dist/src/app/charts/utils.js +36 -37
- package/dist/src/app/charts/utils.js.map +1 -1
- package/dist/src/index.d.ts +48 -15
- package/dist/src/index.js +71 -15
- package/dist/src/index.js.map +1 -1
- package/package.json +30 -20
- package/src/app/charts/Chart.tsx +334 -0
- package/src/app/charts/axes/AxesState.test.ts +34 -0
- package/src/app/charts/axes/AxesState.ts +112 -0
- package/src/app/charts/axes/AxisInterval.test.ts +143 -0
- package/src/app/charts/axes/AxisInterval.ts +139 -0
- package/src/app/charts/axes/BaseAxisRange.ts +113 -0
- package/src/app/charts/axes/ContinuousAxis.tsx +192 -0
- package/src/app/charts/axes/ContinuousAxisRange.test.ts +55 -0
- package/src/app/charts/axes/ContinuousAxisRange.ts +96 -0
- package/src/app/charts/axes/OrdinalAxis.tsx +223 -0
- package/src/app/charts/axes/OrdinalAxisRange.test.ts +55 -0
- package/src/app/charts/axes/OrdinalAxisRange.ts +112 -0
- package/src/app/charts/axes/axes.ts +1569 -0
- package/src/app/charts/d3types.ts +16 -0
- package/src/app/charts/filters/regexFilter.test.ts +13 -0
- package/src/app/charts/filters/regexFilter.ts +17 -0
- package/src/app/charts/hooks/useAxes.tsx +341 -0
- package/src/app/charts/hooks/useChart.tsx +159 -0
- package/src/app/charts/hooks/useDataObservable.tsx +175 -0
- package/src/app/charts/hooks/useInitialData.tsx +65 -0
- package/src/app/charts/hooks/useMouse.tsx +125 -0
- package/src/app/charts/hooks/usePlotDimensions.tsx +120 -0
- package/src/app/charts/hooks/useTooltip.tsx +112 -0
- package/src/app/charts/observables/ChartData.ts +31 -0
- package/src/app/charts/observables/iterates.test.ts +201 -0
- package/src/app/charts/observables/iterates.ts +203 -0
- package/src/app/charts/observables/ordinals.test.ts +135 -0
- package/src/app/charts/observables/ordinals.ts +248 -0
- package/src/app/charts/plots/BarPlot.tsx +1088 -0
- package/src/app/charts/plots/PoincarePlot.tsx +832 -0
- package/src/app/charts/plots/RasterPlot.tsx +676 -0
- package/src/app/charts/plots/ScatterPlot.tsx +653 -0
- package/src/app/charts/plots/plot.ts +75 -0
- package/src/app/charts/series/baseSeries.ts +52 -0
- package/src/app/charts/series/datumSeries.test.ts +60 -0
- package/src/app/charts/series/iterateSeries.ts +56 -0
- package/src/app/charts/series/ordinalSeries.ts +164 -0
- package/src/app/charts/series/timeSeries.ts +40 -0
- package/src/app/charts/series/timeSeriesChartData.ts +68 -0
- package/src/app/charts/styling/barPlotStyle.ts +126 -0
- package/src/app/charts/styling/margins.test.ts +22 -0
- package/src/app/charts/styling/margins.ts +58 -0
- package/src/app/charts/styling/svgStyle.ts +118 -0
- package/src/app/charts/subscriptions/subscription.test.ts +499 -0
- package/src/app/charts/subscriptions/subscriptions.ts +635 -0
- package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +440 -0
- package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +352 -0
- package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +274 -0
- package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +319 -0
- package/src/app/charts/tooltips/Tooltip.tsx +148 -0
- package/src/app/charts/tooltips/tooltipUtils.ts +216 -0
- package/src/app/charts/trackers/Tracker.tsx +129 -0
- package/src/app/charts/trackers/trackerUtils.ts +494 -0
- package/src/app/charts/utils.ts +109 -0
- package/dist/src/app/charts/CategoryAxis.d.ts +0 -20
- package/dist/src/app/charts/CategoryAxis.js +0 -112
- package/dist/src/app/charts/CategoryAxis.js.map +0 -1
- package/dist/src/app/charts/ContinuousAxis.d.ts +0 -16
- package/dist/src/app/charts/ContinuousAxis.js +0 -186
- package/dist/src/app/charts/ContinuousAxis.js.map +0 -1
- package/dist/src/app/charts/RasterPlot.js.map +0 -1
- package/dist/src/app/charts/RasterPlotTooltipContent.js.map +0 -1
- package/dist/src/app/charts/ScatterPlot.js +0 -351
- package/dist/src/app/charts/ScatterPlot.js.map +0 -1
- package/dist/src/app/charts/ScatterPlotTooltipContent.js +0 -163
- package/dist/src/app/charts/ScatterPlotTooltipContent.js.map +0 -1
- package/dist/src/app/charts/Tooltip.js.map +0 -1
- package/dist/src/app/charts/Tracker.js +0 -65
- package/dist/src/app/charts/Tracker.js.map +0 -1
- package/dist/src/app/charts/axes.d.ts +0 -132
- package/dist/src/app/charts/axes.js +0 -265
- package/dist/src/app/charts/axes.js.map +0 -1
- package/dist/src/app/charts/chartData.js +0 -32
- package/dist/src/app/charts/chartData.js.map +0 -1
- package/dist/src/app/charts/continuousAxisRangeFor.d.ts +0 -20
- package/dist/src/app/charts/continuousAxisRangeFor.js +0 -68
- package/dist/src/app/charts/continuousAxisRangeFor.js.map +0 -1
- package/dist/src/app/charts/datumSeries.d.ts +0 -59
- package/dist/src/app/charts/datumSeries.js +0 -55
- package/dist/src/app/charts/datumSeries.js.map +0 -1
- package/dist/src/app/charts/datumSeries.test.js +0 -50
- package/dist/src/app/charts/datumSeries.test.js.map +0 -1
- package/dist/src/app/charts/hooks/AxesState.d.ts +0 -37
- package/dist/src/app/charts/hooks/AxesState.js +0 -44
- package/dist/src/app/charts/hooks/AxesState.js.map +0 -1
- package/dist/src/app/charts/margins.js.map +0 -1
- package/dist/src/app/charts/margins.test.js +0 -14
- package/dist/src/app/charts/margins.test.js.map +0 -1
- package/dist/src/app/charts/plot.js.map +0 -1
- package/dist/src/app/charts/regexFilter.d.ts +0 -9
- package/dist/src/app/charts/regexFilter.js +0 -17
- package/dist/src/app/charts/regexFilter.js.map +0 -1
- package/dist/src/app/charts/regexFilter.test.js +0 -11
- package/dist/src/app/charts/regexFilter.test.js.map +0 -1
- package/dist/src/app/charts/subscriptions.d.ts +0 -43
- package/dist/src/app/charts/subscriptions.js +0 -213
- package/dist/src/app/charts/subscriptions.js.map +0 -1
- package/dist/src/app/charts/svgStyle.d.ts +0 -27
- package/dist/src/app/charts/svgStyle.js +0 -32
- package/dist/src/app/charts/svgStyle.js.map +0 -1
- package/dist/src/app/charts/timeRange.test.js +0 -54
- package/dist/src/app/charts/timeRange.test.js.map +0 -1
- package/dist/src/app/charts/tooltipUtils.js.map +0 -1
- package/dist/src/app/charts/trackerUtils.js +0 -130
- package/dist/src/app/charts/trackerUtils.js.map +0 -1
- /package/dist/src/app/charts/{datumSeries.test.d.ts → axes/AxesState.test.d.ts} +0 -0
- /package/dist/src/app/charts/{margins.test.d.ts → axes/AxisInterval.test.d.ts} +0 -0
- /package/dist/src/app/charts/{regexFilter.test.d.ts → axes/ContinuousAxisRange.test.d.ts} +0 -0
- /package/dist/src/app/charts/{timeRange.test.d.ts → axes/OrdinalAxisRange.test.d.ts} +0 -0
- /package/dist/src/app/charts/{RasterPlotTooltipContent.d.ts → tooltips/RasterPlotTooltipContent.d.ts} +0 -0
- /package/dist/src/app/charts/{ScatterPlotTooltipContent.d.ts → tooltips/ScatterPlotTooltipContent.d.ts} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Optional } from "result-fn";
|
|
2
|
+
/**
|
|
3
|
+
* Holds the information to allow mapping axes names to the underlying axes objects.
|
|
4
|
+
* These objects hold the axis ID, its location on the chart (i.e. left, right, bottom, upper)
|
|
5
|
+
* and the underlying d3 selection objects for managing the axes. Axis objects that extend
|
|
6
|
+
* the `BaseAxis` class may have additional properties.
|
|
7
|
+
* @typeParam A The type of the axes (must extend `BaseAxis`)
|
|
8
|
+
*/
|
|
9
|
+
export class AxesState {
|
|
10
|
+
constructor(axes) {
|
|
11
|
+
this.axes = axes;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new axes state from the specified map of axes.
|
|
15
|
+
* @param axes Mapping of the axes ID's to the axes.
|
|
16
|
+
* @return A new axes-state object.
|
|
17
|
+
*/
|
|
18
|
+
static from(axes) {
|
|
19
|
+
return new AxesState(axes);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates an empty axes-state object.
|
|
23
|
+
* @return A new axes-state object.
|
|
24
|
+
*/
|
|
25
|
+
static empty() {
|
|
26
|
+
return new AxesState(new Map());
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @return `true` if the axes state is empty, `false` otherwise.
|
|
30
|
+
*/
|
|
31
|
+
isEmpty() {
|
|
32
|
+
return this.axes.size === 0;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a deep copy of the current axes state.
|
|
36
|
+
* @return A deep copy of the current axes state.
|
|
37
|
+
*/
|
|
38
|
+
copy() {
|
|
39
|
+
return new AxesState(new Map(Array.from(this.axes.entries())
|
|
40
|
+
.map(([id, axis]) => [id, Object.assign({}, axis)])));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Adds an axis to the current axis state and returns a new axis state. This is an internal state
|
|
44
|
+
* management function. This should generally not be used. Instead, use the {@link UseChartValues.addXAxis}
|
|
45
|
+
* and {@link UseChartValues.addYAxis} functions to add axes.
|
|
46
|
+
* @param axis The axis to add
|
|
47
|
+
* @param id The ID of the axis to add
|
|
48
|
+
* @return An updated axes state that has the new axis
|
|
49
|
+
* @see UseChartValues.addXAxis
|
|
50
|
+
* @see UseChartValues.addYAxis
|
|
51
|
+
*/
|
|
52
|
+
addAxis(axis, id) {
|
|
53
|
+
const updatedAxes = this.axes.set(id, axis);
|
|
54
|
+
return new AxesState(updatedAxes);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Attempts to retrieve the x-axis for the specified ID
|
|
58
|
+
* @param axisId The unique ID of the axis
|
|
59
|
+
* @return The axis, or undefined if no axis with the specified ID is found
|
|
60
|
+
*/
|
|
61
|
+
axisFor(axisId) {
|
|
62
|
+
const axis = this.axes.get(axisId);
|
|
63
|
+
// when there is no axis for the specified ID and there is at least
|
|
64
|
+
// one axis, then just use that...it is the default axis
|
|
65
|
+
if (axis === undefined && this.axes.size >= 1) {
|
|
66
|
+
return Optional.of(Array.from(this.axes.values())[0]);
|
|
67
|
+
}
|
|
68
|
+
return Optional.ofNullable(axis);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns the default axis
|
|
72
|
+
* @return The default axis
|
|
73
|
+
* @see axisDefaultId
|
|
74
|
+
*/
|
|
75
|
+
defaultAxis() {
|
|
76
|
+
const axes = Array.from(this.axes.values());
|
|
77
|
+
return axes.length > 0 ?
|
|
78
|
+
Optional.of(axes[0]) :
|
|
79
|
+
Optional.empty();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @return An array holding all existing the x-axis IDs
|
|
83
|
+
*/
|
|
84
|
+
axisIds() {
|
|
85
|
+
return Array.from(this.axes.keys());
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @return The default name of the x-axis (in case only on default axis was added)
|
|
89
|
+
*/
|
|
90
|
+
axisDefaultId() {
|
|
91
|
+
const ids = Array.from(this.axes.keys());
|
|
92
|
+
return ids.length > 0 ?
|
|
93
|
+
Optional.of(ids[0]) :
|
|
94
|
+
Optional.empty();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=AxesState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxesState.js","sourceRoot":"","sources":["../../../../../src/app/charts/axes/AxesState.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IAGlB,YAAoB,IAAoB;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAqB,IAAoB;QAChD,OAAO,IAAI,SAAS,CAAI,IAAI,CAAC,CAAA;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK;QACR,OAAO,IAAI,SAAS,CAAI,IAAI,GAAG,EAAa,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI;QACA,OAAO,IAAI,SAAS,CAChB,IAAI,GAAG,CAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,oBAAM,IAAI,EAAE,CAAC,CACxC,CACJ,CAAA;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAO,EAAE,EAAU;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,SAAS,CAAI,WAAW,CAAC,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAc;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClC,mEAAmE;QACnE,wDAAwD;QACxD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,WAAW;QACP,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,QAAQ,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,OAAO;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,QAAQ,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AxesState } from "./AxesState";
|
|
2
|
+
import { AxisLocation } from "./axes";
|
|
3
|
+
describe('AxesState', () => {
|
|
4
|
+
describe('creating axes-state', () => {
|
|
5
|
+
it('should create an empty axes state', () => {
|
|
6
|
+
expect(AxesState.empty().isEmpty()).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it('should create an axes state with one axis', () => {
|
|
9
|
+
const axis = {
|
|
10
|
+
axisId: 'new-axis',
|
|
11
|
+
location: AxisLocation.Bottom,
|
|
12
|
+
selection: undefined
|
|
13
|
+
};
|
|
14
|
+
const axesState = AxesState.from(new Map([['new-added-axis', axis]]));
|
|
15
|
+
expect(axesState.isEmpty()).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
it('should be able to start with an empty axes state and add to it', () => {
|
|
18
|
+
const axesState = AxesState.empty();
|
|
19
|
+
expect(axesState.isEmpty()).toBe(true);
|
|
20
|
+
const axis = {
|
|
21
|
+
axisId: 'new-axis',
|
|
22
|
+
location: AxisLocation.Bottom,
|
|
23
|
+
selection: undefined
|
|
24
|
+
};
|
|
25
|
+
const updatedAxesState = axesState.addAxis(axis, 'new-added-axis');
|
|
26
|
+
expect(updatedAxesState.isEmpty()).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=AxesState.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxesState.test.js","sourceRoot":"","sources":["../../../../../src/app/charts/axes/AxesState.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,YAAY,EAAW,MAAM,QAAQ,CAAC;AAG9C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,IAAI,GAAa;gBACnB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,YAAY,CAAC,MAAM;gBAC7B,SAAS,EAAE,SAA4C;aAC1D,CAAA;YACD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAW,IAAI,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACtE,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAY,CAAC;YAC9C,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,IAAI,GAAa;gBACnB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,YAAY,CAAC,MAAM;gBAC7B,SAAS,EAAE,SAA4C;aAC1D,CAAA;YACD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YACnE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The range of an axis is the physical (start, end) pixels on the screen for the axis.
|
|
3
|
+
* This is the pixel-space of the axis (where as the domain is the data-space of the axis,
|
|
4
|
+
* for example, the tick values).
|
|
5
|
+
*/
|
|
6
|
+
export declare class AxisInterval {
|
|
7
|
+
readonly start: number;
|
|
8
|
+
readonly end: number;
|
|
9
|
+
private constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Creates an axis interval from the specified start and end values
|
|
12
|
+
* @param start The axis-range start value
|
|
13
|
+
* @param end The axis-range end value
|
|
14
|
+
* @return The axis-interval
|
|
15
|
+
*/
|
|
16
|
+
static from(start: number, end: number): AxisInterval;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an axis interval from the specified tuple
|
|
19
|
+
* @param tuple The tuple to convert
|
|
20
|
+
* @return The axis-interval
|
|
21
|
+
*/
|
|
22
|
+
static as(tuple: [start: number, end: number]): AxisInterval;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an empty axis interval
|
|
25
|
+
* @return An empty axis interval
|
|
26
|
+
*/
|
|
27
|
+
static empty(): AxisInterval;
|
|
28
|
+
/**
|
|
29
|
+
* @return `true` if the axis interval is empty, `false` otherwise
|
|
30
|
+
*/
|
|
31
|
+
isEmpty(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* @return `true` if the axis interval is not empty, `false` otherwise
|
|
34
|
+
*/
|
|
35
|
+
isNotEmpty(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* @return `true` if the specified axis interval is equal to this one, `false` otherwise
|
|
38
|
+
*/
|
|
39
|
+
equalsInterval(start: number, end: number): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Determines whether the specified axis interval is equal to this one.
|
|
42
|
+
* @param other The other axis interval to compare to
|
|
43
|
+
* @return `true` if the specified axis interval is equal to this one, `false` otherwise.
|
|
44
|
+
*/
|
|
45
|
+
equals(other: AxisInterval): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a copy of the specified axis interval
|
|
48
|
+
* @return A copy of the specified axis interval
|
|
49
|
+
*/
|
|
50
|
+
copy(): AxisInterval;
|
|
51
|
+
/**
|
|
52
|
+
* Converts the axis interval to a tuple
|
|
53
|
+
* @return The axis interval as a tuple
|
|
54
|
+
*/
|
|
55
|
+
asTuple(): [start: number, end: number];
|
|
56
|
+
/**
|
|
57
|
+
* Applies the specified function to the axis interval and returns the result
|
|
58
|
+
* @param fn The function to apply to the axis interval
|
|
59
|
+
* @return The result of the function application
|
|
60
|
+
*/
|
|
61
|
+
map(fn: (start: number, end: number) => [start: number, end: number]): AxisInterval;
|
|
62
|
+
/**
|
|
63
|
+
* Calculates the measure (end - start) of the specified axis interval.
|
|
64
|
+
* The measure of an empty axis interval is 0.
|
|
65
|
+
* @return The measure (end - start) of the specified axis interval
|
|
66
|
+
*/
|
|
67
|
+
measure(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Updates the start value of the specified axis interval
|
|
70
|
+
* @param delta The amount by which to update the start value
|
|
71
|
+
* @return A new axis interval
|
|
72
|
+
*/
|
|
73
|
+
translateStart(delta: number): AxisInterval;
|
|
74
|
+
/**
|
|
75
|
+
* Updates the end value of the specified axis interval
|
|
76
|
+
* @param delta The amount by which to update the end value
|
|
77
|
+
* @return The new axis interval
|
|
78
|
+
*/
|
|
79
|
+
translateEnd(delta: number): AxisInterval;
|
|
80
|
+
/**
|
|
81
|
+
* Translates the specified axis interval by the specified delta.
|
|
82
|
+
* @param delta The amount by which to translate the axis interval
|
|
83
|
+
* @return The new axis interval
|
|
84
|
+
*/
|
|
85
|
+
translate(delta: number): AxisInterval;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Creates a copy of the specified map(axis_id, (start, end))
|
|
89
|
+
* @param ranges The ranges map to copy
|
|
90
|
+
* @return A copy of the specified map(axis_id, (start, end))
|
|
91
|
+
*/
|
|
92
|
+
export declare function copyRangeMap(ranges: Map<string, AxisInterval>): Map<string, AxisInterval>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The range of an axis is the physical (start, end) pixels on the screen for the axis.
|
|
3
|
+
* This is the pixel-space of the axis (where as the domain is the data-space of the axis,
|
|
4
|
+
* for example, the tick values).
|
|
5
|
+
*/
|
|
6
|
+
export class AxisInterval {
|
|
7
|
+
constructor(start, end) {
|
|
8
|
+
this.start = start;
|
|
9
|
+
this.end = end;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates an axis interval from the specified start and end values
|
|
13
|
+
* @param start The axis-range start value
|
|
14
|
+
* @param end The axis-range end value
|
|
15
|
+
* @return The axis-interval
|
|
16
|
+
*/
|
|
17
|
+
static from(start, end) {
|
|
18
|
+
return new AxisInterval(Math.min(start, end), Math.max(start, end));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates an axis interval from the specified tuple
|
|
22
|
+
* @param tuple The tuple to convert
|
|
23
|
+
* @return The axis-interval
|
|
24
|
+
*/
|
|
25
|
+
static as(tuple) {
|
|
26
|
+
return AxisInterval.from(tuple[0], tuple[1]);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates an empty axis interval
|
|
30
|
+
* @return An empty axis interval
|
|
31
|
+
*/
|
|
32
|
+
static empty() {
|
|
33
|
+
return new AxisInterval(NaN, NaN);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @return `true` if the axis interval is empty, `false` otherwise
|
|
37
|
+
*/
|
|
38
|
+
isEmpty() {
|
|
39
|
+
return isNaN(this.start) || isNaN(this.end);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @return `true` if the axis interval is not empty, `false` otherwise
|
|
43
|
+
*/
|
|
44
|
+
isNotEmpty() {
|
|
45
|
+
return !this.isEmpty();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @return `true` if the specified axis interval is equal to this one, `false` otherwise
|
|
49
|
+
*/
|
|
50
|
+
equalsInterval(start, end) {
|
|
51
|
+
return (this.start === start && this.end === end) || (this.isEmpty() && isNaN(start) && isNaN(end));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Determines whether the specified axis interval is equal to this one.
|
|
55
|
+
* @param other The other axis interval to compare to
|
|
56
|
+
* @return `true` if the specified axis interval is equal to this one, `false` otherwise.
|
|
57
|
+
*/
|
|
58
|
+
equals(other) {
|
|
59
|
+
return this.equalsInterval(other.start, other.end);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a copy of the specified axis interval
|
|
63
|
+
* @return A copy of the specified axis interval
|
|
64
|
+
*/
|
|
65
|
+
copy() {
|
|
66
|
+
return AxisInterval.from(this.start, this.end);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Converts the axis interval to a tuple
|
|
70
|
+
* @return The axis interval as a tuple
|
|
71
|
+
*/
|
|
72
|
+
asTuple() {
|
|
73
|
+
return [this.start, this.end];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Applies the specified function to the axis interval and returns the result
|
|
77
|
+
* @param fn The function to apply to the axis interval
|
|
78
|
+
* @return The result of the function application
|
|
79
|
+
*/
|
|
80
|
+
map(fn) {
|
|
81
|
+
const [start, end] = fn(this.start, this.end);
|
|
82
|
+
return AxisInterval.from(start, end);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Calculates the measure (end - start) of the specified axis interval.
|
|
86
|
+
* The measure of an empty axis interval is 0.
|
|
87
|
+
* @return The measure (end - start) of the specified axis interval
|
|
88
|
+
*/
|
|
89
|
+
measure() {
|
|
90
|
+
return this.isNotEmpty() ? this.end - this.start : 0;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Updates the start value of the specified axis interval
|
|
94
|
+
* @param delta The amount by which to update the start value
|
|
95
|
+
* @return A new axis interval
|
|
96
|
+
*/
|
|
97
|
+
translateStart(delta) {
|
|
98
|
+
return this.isNotEmpty() ? AxisInterval.from(this.start + delta, this.end) : AxisInterval.empty();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Updates the end value of the specified axis interval
|
|
102
|
+
* @param delta The amount by which to update the end value
|
|
103
|
+
* @return The new axis interval
|
|
104
|
+
*/
|
|
105
|
+
translateEnd(delta) {
|
|
106
|
+
return this.isNotEmpty() ? AxisInterval.from(this.start, this.end + delta) : AxisInterval.empty();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Translates the specified axis interval by the specified delta.
|
|
110
|
+
* @param delta The amount by which to translate the axis interval
|
|
111
|
+
* @return The new axis interval
|
|
112
|
+
*/
|
|
113
|
+
translate(delta) {
|
|
114
|
+
return this.isNotEmpty() ? AxisInterval.from(this.start + delta, this.end + delta) : AxisInterval.empty();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Creates a copy of the specified map(axis_id, (start, end))
|
|
119
|
+
* @param ranges The ranges map to copy
|
|
120
|
+
* @return A copy of the specified map(axis_id, (start, end))
|
|
121
|
+
*/
|
|
122
|
+
export function copyRangeMap(ranges) {
|
|
123
|
+
return new Map(Array.from(ranges.entries())
|
|
124
|
+
.map(([id, range]) => [id, range.copy()]));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=AxisInterval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxisInterval.js","sourceRoot":"","sources":["../../../../../src/app/charts/axes/AxisInterval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { AxisInterval, copyRangeMap } from "./AxisInterval";
|
|
2
|
+
describe('AxisInterval', () => {
|
|
3
|
+
describe('AxisInterval creation', () => {
|
|
4
|
+
it('should create an AxisInterval with valid start and end values', () => {
|
|
5
|
+
const interval = AxisInterval.from(1, 5);
|
|
6
|
+
expect(interval.start).toBe(1);
|
|
7
|
+
expect(interval.end).toBe(5);
|
|
8
|
+
});
|
|
9
|
+
it('should create an AxisInterval with correct start and end when the start is greater than the end', () => {
|
|
10
|
+
const interval = AxisInterval.from(5, 1);
|
|
11
|
+
expect(interval.start).toBe(1);
|
|
12
|
+
expect(interval.end).toBe(5);
|
|
13
|
+
});
|
|
14
|
+
it('should create an AxisInterval from a tuple holding start and end values', () => {
|
|
15
|
+
const interval = AxisInterval.as([1, 5]);
|
|
16
|
+
expect(interval.start).toBe(1);
|
|
17
|
+
expect(interval.end).toBe(5);
|
|
18
|
+
});
|
|
19
|
+
it('should create an empty AxisInterval', () => {
|
|
20
|
+
const interval = AxisInterval.empty();
|
|
21
|
+
expect(interval.start).toBeNaN();
|
|
22
|
+
expect(interval.end).toBeNaN();
|
|
23
|
+
});
|
|
24
|
+
it('should create an empty AxisInterval with start and end NaN', () => {
|
|
25
|
+
const interval = AxisInterval.from(NaN, NaN);
|
|
26
|
+
expect(interval.start).toBeNaN();
|
|
27
|
+
expect(interval.end).toBeNaN();
|
|
28
|
+
});
|
|
29
|
+
it('should create a new copy of an existing AxisInterval', () => {
|
|
30
|
+
const interval = AxisInterval.from(1, 5);
|
|
31
|
+
const copy = interval.copy();
|
|
32
|
+
expect(copy.start).toBe(1);
|
|
33
|
+
expect(copy.end).toBe(5);
|
|
34
|
+
expect(copy).not.toBe(interval);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('AxisInterval comparison', () => {
|
|
38
|
+
const interval1 = AxisInterval.from(1, 5);
|
|
39
|
+
const interval2 = AxisInterval.from(1, 5);
|
|
40
|
+
const interval3 = AxisInterval.from(2, 5);
|
|
41
|
+
const emptyInterval = AxisInterval.empty();
|
|
42
|
+
it('should return true when comparing two AxisIntervals with the same start and end values', () => {
|
|
43
|
+
expect(interval1.equals(interval2)).toBe(true);
|
|
44
|
+
expect(interval1.equalsInterval(1, 5)).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it('should return not-equal when comparing two AxisIntervals with different start and end values', () => {
|
|
47
|
+
expect(interval1.equals(interval3)).toBe(false);
|
|
48
|
+
expect(interval1.equalsInterval(1, 3)).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
it('should return true when comparing two empty intervals', () => {
|
|
51
|
+
expect(AxisInterval.empty().equals(emptyInterval)).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('AxisInterval conversion', () => {
|
|
55
|
+
it('should convert an AxisInterval to a tuple', () => {
|
|
56
|
+
const interval = AxisInterval.from(1, 5);
|
|
57
|
+
const tuple = interval.asTuple();
|
|
58
|
+
expect(tuple).toEqual([1, 5]);
|
|
59
|
+
});
|
|
60
|
+
it('should map an AxisInterval to a new AxisInterval', () => {
|
|
61
|
+
const interval = AxisInterval.from(1, 5);
|
|
62
|
+
const mappedInterval = interval.map((start, end) => ([start * 2, end * 3]));
|
|
63
|
+
expect(mappedInterval.start).toBe(2);
|
|
64
|
+
expect(mappedInterval.end).toBe(15);
|
|
65
|
+
expect(mappedInterval).not.toBe(interval);
|
|
66
|
+
});
|
|
67
|
+
it('should calculate the measure of an AxisInterval', () => {
|
|
68
|
+
const interval = AxisInterval.from(1, 5);
|
|
69
|
+
expect(interval.measure()).toBe(4);
|
|
70
|
+
});
|
|
71
|
+
it('should calculate the measure of an empty AxisInterval', () => {
|
|
72
|
+
const interval = AxisInterval.empty();
|
|
73
|
+
expect(interval.measure()).toBe(0);
|
|
74
|
+
});
|
|
75
|
+
it('should translate the start of the AxisInterval', () => {
|
|
76
|
+
const interval = AxisInterval.from(1, 5);
|
|
77
|
+
const translatedInterval = interval.translateStart(12);
|
|
78
|
+
expect(translatedInterval.start).toBe(5);
|
|
79
|
+
expect(translatedInterval.end).toBe(13);
|
|
80
|
+
expect(translatedInterval).not.toBe(interval);
|
|
81
|
+
});
|
|
82
|
+
it('should translate the start of an empty interval into an empty interval', () => {
|
|
83
|
+
expect(AxisInterval.empty().translateStart(12)).toEqual(AxisInterval.empty());
|
|
84
|
+
});
|
|
85
|
+
it('should translate the end of the AxisInterval', () => {
|
|
86
|
+
const interval = AxisInterval.from(1, 5);
|
|
87
|
+
const translatedInterval = interval.translateEnd(-12);
|
|
88
|
+
expect(translatedInterval.start).toBe(-7);
|
|
89
|
+
expect(translatedInterval.end).toBe(1);
|
|
90
|
+
expect(translatedInterval).not.toBe(interval);
|
|
91
|
+
});
|
|
92
|
+
it('should translate the end of an empty interval into an empty interval', () => {
|
|
93
|
+
expect(AxisInterval.empty().translateEnd(12)).toEqual(AxisInterval.empty());
|
|
94
|
+
});
|
|
95
|
+
it('should translate an AxisInterval', () => {
|
|
96
|
+
const interval = AxisInterval.from(1, 5);
|
|
97
|
+
const translatedInterval = interval.translate(-12);
|
|
98
|
+
expect(translatedInterval.start).toBe(-11);
|
|
99
|
+
expect(translatedInterval.end).toBe(-7);
|
|
100
|
+
expect(translatedInterval).not.toBe(interval);
|
|
101
|
+
});
|
|
102
|
+
it('should translate an empty interval into an empty interval', () => {
|
|
103
|
+
expect(AxisInterval.empty().translate(12)).toEqual(AxisInterval.empty());
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('Copy a range map', () => {
|
|
107
|
+
it('should create a copy of a range map', () => {
|
|
108
|
+
const ranges = new Map([
|
|
109
|
+
['a', AxisInterval.from(1, 5)],
|
|
110
|
+
['b', AxisInterval.from(10, 20)]
|
|
111
|
+
]);
|
|
112
|
+
const copy = copyRangeMap(ranges);
|
|
113
|
+
expect(copy).not.toBe(ranges);
|
|
114
|
+
expect(copy.size).toBe(ranges.size);
|
|
115
|
+
expect(copy.get('a')).toEqual(ranges.get('a'));
|
|
116
|
+
expect(copy.get('b')).toEqual(ranges.get('b'));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=AxisInterval.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxisInterval.test.js","sourceRoot":"","sources":["../../../../../src/app/charts/axes/AxisInterval.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE1D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAE1B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACrE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iGAAiG,EAAE,GAAG,EAAE;YACvG,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;YAC/E,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;YAChC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;YAChC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAE3C,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;YAC9F,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8FAA8F,EAAE,GAAG,EAAE;YACpG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YACxD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAE3E,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAA;YACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;YACtD,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAC9E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;QACjF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAA;YACrD,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC5E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACxC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAuB;gBACzC,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aACnC,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;YAEjC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { AxisInterval } from "./AxisInterval";
|
|
2
|
+
/**
|
|
3
|
+
* An immutable axis range that holds the current range and the original (no zoom) range.
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class BaseAxisRange {
|
|
6
|
+
readonly current: AxisInterval;
|
|
7
|
+
readonly original: AxisInterval;
|
|
8
|
+
/**
|
|
9
|
+
* @param start The axis-range start value.
|
|
10
|
+
* @param end The axis-range end value.
|
|
11
|
+
* @param [originalStart = start] The optional original axis-range start value. Defaults to the start value if not specified.
|
|
12
|
+
* @param [originalEnd = end] The optional original axis-range end value. Defaults to the end value if not specified.
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
protected constructor(start: number, end: number, originalStart?: number, originalEnd?: number);
|
|
16
|
+
/**
|
|
17
|
+
* Determines whether the specified (start, end) interval matches the original interval
|
|
18
|
+
* @param start The start of the interval
|
|
19
|
+
* @param end The end of the interval
|
|
20
|
+
* @return `true` if the specified interval matches the original interval; `false` otherwise
|
|
21
|
+
*/
|
|
22
|
+
matchesOriginal(start: number, end: number): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the current distance between the start and end of the range.
|
|
25
|
+
*/
|
|
26
|
+
get currentDistance(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the original (e.g. before any zooming or panning) distance between the start and end of the range.
|
|
29
|
+
*/
|
|
30
|
+
get originalDistance(): number;
|
|
31
|
+
/**
|
|
32
|
+
* The ratio between the current and original distance.
|
|
33
|
+
*/
|
|
34
|
+
get scaleFactor(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Scales the range using the current scale-factor (closure on `scaleFactor`)
|
|
37
|
+
* @param factor The factor used to update the range
|
|
38
|
+
* @param value The current value being scaled
|
|
39
|
+
* @return The new range, represented by an array holding the start and end value
|
|
40
|
+
*/
|
|
41
|
+
protected scaledRange(factor: number, value: number): AxisInterval;
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* Scales the axis-range by the specified scale factor from the specified {@link value}. The equations
|
|
45
|
+
* are written so that the zooming (scaling) occurs at the specified {@link value}, and expands/contracts equally
|
|
46
|
+
* from that {@link value}.
|
|
47
|
+
* @param factor The scale factor
|
|
48
|
+
* @param value The time from which to scale the interval
|
|
49
|
+
* @return A new continuous-axis range with updated values
|
|
50
|
+
*/
|
|
51
|
+
abstract scale(factor: number, value: number): BaseAxisRange;
|
|
52
|
+
/**
|
|
53
|
+
* Scales the axis-range by the specified scale factor, but constrains the range to the specified
|
|
54
|
+
* {@link constraint} min and max. The equations are written so that the zooming (scaling) occurs
|
|
55
|
+
* at the specified {@link value}, and expands/contracts equally from that {@link value}.
|
|
56
|
+
* @param factor The scale factor
|
|
57
|
+
* @param value The value at which the zoom is initiated
|
|
58
|
+
* @param constraint The min and max range
|
|
59
|
+
* @return A new continuous-axis range with updated values
|
|
60
|
+
*/
|
|
61
|
+
abstract constrainedScale(factor: number, value: number, constraint: [min: number, max: number]): BaseAxisRange;
|
|
62
|
+
/**
|
|
63
|
+
* Translates the axis-range by the specified amount
|
|
64
|
+
* @param amount The amount by which to translate the axis-range
|
|
65
|
+
* @param [constraints] Optional constraint interval in which the axis range must be within
|
|
66
|
+
* @return An updated {@link ContinuousAxisRange} that has been translated by the specified amount
|
|
67
|
+
*/
|
|
68
|
+
abstract translate(amount: number, constraints?: [start: number, end: number]): BaseAxisRange;
|
|
69
|
+
/**
|
|
70
|
+
* Updates the axis-range based on the new start and end values
|
|
71
|
+
* @param start The new start of the axis-range
|
|
72
|
+
* @param end The new end of the axis range
|
|
73
|
+
* @return The updated axis-range type, with all other values unchanged
|
|
74
|
+
*/
|
|
75
|
+
abstract update(start: number, end: number): BaseAxisRange;
|
|
76
|
+
/**
|
|
77
|
+
* Updates the original range with the new start and end values.
|
|
78
|
+
* @param start The new value for the start of the original range
|
|
79
|
+
* @param end The new value for the end of the original range
|
|
80
|
+
* @return The updated original range.
|
|
81
|
+
*/
|
|
82
|
+
abstract updateOriginal(start: number, end: number): BaseAxisRange;
|
|
83
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AxisInterval } from "./AxisInterval";
|
|
2
|
+
/**
|
|
3
|
+
* An immutable axis range that holds the current range and the original (no zoom) range.
|
|
4
|
+
*/
|
|
5
|
+
export class BaseAxisRange {
|
|
6
|
+
/**
|
|
7
|
+
* @param start The axis-range start value.
|
|
8
|
+
* @param end The axis-range end value.
|
|
9
|
+
* @param [originalStart = start] The optional original axis-range start value. Defaults to the start value if not specified.
|
|
10
|
+
* @param [originalEnd = end] The optional original axis-range end value. Defaults to the end value if not specified.
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
constructor(start, end, originalStart = start, originalEnd = end) {
|
|
14
|
+
this.current = AxisInterval.from(start, end);
|
|
15
|
+
this.original = AxisInterval.from(originalStart, originalEnd);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether the specified (start, end) interval matches the original interval
|
|
19
|
+
* @param start The start of the interval
|
|
20
|
+
* @param end The end of the interval
|
|
21
|
+
* @return `true` if the specified interval matches the original interval; `false` otherwise
|
|
22
|
+
*/
|
|
23
|
+
matchesOriginal(start, end) {
|
|
24
|
+
return this.original.equalsInterval(start, end);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the current distance between the start and end of the range.
|
|
28
|
+
*/
|
|
29
|
+
get currentDistance() {
|
|
30
|
+
return this.current.measure();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the original (e.g. before any zooming or panning) distance between the start and end of the range.
|
|
34
|
+
*/
|
|
35
|
+
get originalDistance() {
|
|
36
|
+
return this.original.measure();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The ratio between the current and original distance.
|
|
40
|
+
*/
|
|
41
|
+
get scaleFactor() {
|
|
42
|
+
return this.currentDistance / this.originalDistance;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Scales the range using the current scale-factor (closure on `scaleFactor`)
|
|
46
|
+
* @param factor The factor used to update the range
|
|
47
|
+
* @param value The current value being scaled
|
|
48
|
+
* @return The new range, represented by an array holding the start and end value
|
|
49
|
+
*/
|
|
50
|
+
scaledRange(factor, value) {
|
|
51
|
+
const dtStart = value - this.current.start;
|
|
52
|
+
const dtEnd = this.current.end - value;
|
|
53
|
+
const start = value - dtStart * factor / this.scaleFactor;
|
|
54
|
+
const end = value + dtEnd * factor / this.scaleFactor;
|
|
55
|
+
return AxisInterval.from(start, end);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=BaseAxisRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAxisRange.js","sourceRoot":"","sources":["../../../../../src/app/charts/axes/BaseAxisRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAgB,aAAa;IAK/B;;;;;;OAMG;IACH,YAAsB,KAAa,EAAE,GAAW,EAAE,gBAAwB,KAAK,EAAE,cAAsB,GAAG;QACtG,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,KAAa,EAAE,GAAW;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAA;IACvD,CAAC;IAED;;;;;OAKG;IACO,WAAW,CAAC,MAAc,EAAE,KAAa;QAC/C,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAA;QACtC,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;QACzD,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;QACrD,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;CA+CJ"}
|