stream-charts 1.0.0 → 1.1.0
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 +758 -345
- package/changes.md +10 -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} +17 -11
- package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +52 -25
- 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
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
import { setClipPath } from "./plot";
|
|
1
|
+
import { setClipPathG } from "./plot";
|
|
13
2
|
import * as d3 from "d3";
|
|
14
|
-
import { noop } from "
|
|
15
|
-
import { useChart } from "
|
|
3
|
+
import { noop } from "../utils";
|
|
4
|
+
import { useChart } from "../hooks/useChart";
|
|
16
5
|
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
6
|
+
import { axesForSeriesGen, continuousAxisIntervals, continuousAxisRanges, continuousAxisZoomHandler, defaultLineStyle, panHandler } from "../axes/axes";
|
|
7
|
+
import { subscriptionTimeSeriesFor, subscriptionTimeSeriesWithCadenceFor } from "../subscriptions/subscriptions";
|
|
8
|
+
import { useDataObservable } from "../hooks/useDataObservable";
|
|
9
|
+
import { usePlotDimensions } from "../hooks/usePlotDimensions";
|
|
10
|
+
import { useInitialData } from "../hooks/useInitialData";
|
|
11
|
+
import { Optional } from "result-fn";
|
|
12
|
+
import { ContinuousAxisRange } from "../axes/ContinuousAxisRange";
|
|
21
13
|
/**
|
|
22
14
|
* Renders a streaming neuron raster plot for the series in the initial data and those sourced by the
|
|
23
15
|
* observable specified as a property in the {@link Chart}. This component uses the {@link useChart}
|
|
@@ -40,61 +32,78 @@ import { subscriptionFor, subscriptionWithCadenceFor } from "./subscriptions";
|
|
|
40
32
|
/>
|
|
41
33
|
*/
|
|
42
34
|
export function RasterPlot(props) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// the
|
|
51
|
-
|
|
52
|
-
|
|
35
|
+
const { chartId, container, mainG, axes, color, seriesStyles, seriesFilter, mouse } = useChart();
|
|
36
|
+
const { xAxesState, yAxesState, setAxisAssignments, setAxisIntervalFor, updateAxisRanges = noop, onUpdateAxesInterval, } = axes;
|
|
37
|
+
const { mouseOverHandlerFor, mouseLeaveHandlerFor } = mouse;
|
|
38
|
+
const { plotDimensions, margin } = usePlotDimensions();
|
|
39
|
+
const { seriesObservable, windowingTime = 100, shouldSubscribe, onSubscribe = noop, onUpdateData, } = useDataObservable();
|
|
40
|
+
const { initialData } = useInitialData();
|
|
41
|
+
const { axisAssignments = new Map(), dropDataAfter = Infinity, panEnabled = false, zoomEnabled = false, zoomKeyModifiersRequired = true, withCadenceOf, spikeMargin = 2, } = props;
|
|
42
|
+
// why do "dataRef" and "seriesRef" both hold on to the same underlying data? for performance.
|
|
43
|
+
//
|
|
44
|
+
// the "dataRef" and "seriesRef" both point to the same underlying data, a collection
|
|
45
|
+
// of series. The series in "dataRef" are bound to the DOM elements through d3. The "seriesRef" series
|
|
46
|
+
// are the ones that are updated as new data is streamed in.
|
|
47
|
+
//
|
|
48
|
+
// the "dataRef" object holds on to a copy of the initial data (which is an array of
|
|
49
|
+
// time-series, e.i. an array of BaseSeries<OrdinalDatum> objects). The slice just creates a copy of
|
|
50
|
+
// the array, but the references to the BaseSeries objects are the same and still point to the same
|
|
51
|
+
// data as the "initialData" array.
|
|
52
|
+
//
|
|
53
|
+
// the "seriesRef" object is a reference to a map (series_name -> BaseSeries<OrdinalDatum>) which is
|
|
54
|
+
// used to update the data in the series. When new data enters, it is appended to one or more series.
|
|
55
|
+
//
|
|
56
|
+
// the series in the "dataRef" object are the ones bound to the DOM elements in d3, and so as these
|
|
57
|
+
// are updated, d3 will update the DOM elements (the elements in this plot).
|
|
58
|
+
const dataRef = useRef(initialData.slice());
|
|
59
|
+
const seriesRef = useRef(new Map(initialData.map(series => [series.name, series])));
|
|
53
60
|
// map(axis_id -> current_time) -- maps the axis ID to the current time for that axis
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
const currentTimeRef = useRef(new Map());
|
|
62
|
+
const subscriptionRef = useRef(undefined);
|
|
63
|
+
const isSubscriptionClosed = () => subscriptionRef.current === undefined || subscriptionRef.current.closed;
|
|
64
|
+
const allowTooltipRef = useRef(isSubscriptionClosed());
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(id => [id, 0]));
|
|
57
67
|
}, [xAxesState]);
|
|
58
68
|
// set the axis assignments needed if a tooltip is being used
|
|
59
|
-
useEffect(
|
|
69
|
+
useEffect(() => {
|
|
60
70
|
setAxisAssignments(axisAssignments);
|
|
61
71
|
}, [axisAssignments, setAxisAssignments]);
|
|
62
72
|
// calculates the distinct series IDs that cover all the series in the plot
|
|
63
|
-
|
|
73
|
+
const axesForSeries = useMemo(() => axesForSeriesGen(initialData, axisAssignments, xAxesState), [initialData, axisAssignments, xAxesState]);
|
|
64
74
|
// updates the timing using the onUpdateTime and updatePlot references. This and the references
|
|
65
75
|
// defined above allow the axes' times to be update properly by avoid stale reference to these
|
|
66
76
|
// functions.
|
|
67
|
-
|
|
77
|
+
const updateTimingAndPlot = useCallback((ranges) => {
|
|
68
78
|
if (mainG !== null) {
|
|
69
79
|
onUpdateTimeRef.current(ranges);
|
|
70
80
|
updatePlotRef.current(ranges, mainG);
|
|
71
|
-
if (
|
|
72
|
-
setTimeout(
|
|
73
|
-
|
|
74
|
-
ranges.forEach(
|
|
75
|
-
|
|
81
|
+
if (onUpdateAxesInterval) {
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
const times = new Map();
|
|
84
|
+
ranges.forEach((range, name) => times.set(name, range.current));
|
|
85
|
+
onUpdateAxesInterval(times);
|
|
76
86
|
}, 0);
|
|
77
87
|
}
|
|
78
88
|
}
|
|
79
|
-
}, [mainG,
|
|
89
|
+
}, [mainG, onUpdateAxesInterval]);
|
|
80
90
|
// todo find better way
|
|
81
91
|
// when the initial data changes, then reset the plot. note that the initial data doesn't change
|
|
82
92
|
// during the normal course of updates from the observable, only when the plot is restarted.
|
|
83
|
-
useEffect(
|
|
93
|
+
useEffect(() => {
|
|
84
94
|
dataRef.current = initialData.slice();
|
|
85
|
-
seriesRef.current = new Map(initialData.map(
|
|
86
|
-
currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(
|
|
87
|
-
updateTimingAndPlot(new Map(Array.from(
|
|
88
|
-
.map(
|
|
89
|
-
var id = _a[0], range = _a[1];
|
|
95
|
+
seriesRef.current = new Map(initialData.map(series => [series.name, series]));
|
|
96
|
+
currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(id => [id, 0]));
|
|
97
|
+
updateTimingAndPlot(new Map(Array.from(continuousAxisRanges(xAxesState.axes).entries())
|
|
98
|
+
.map(([id, range]) => {
|
|
90
99
|
// grab the current range, then calculate the minimum time from the initial data, and
|
|
91
100
|
// set that as the start, and then add the range to it for the end time
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
.filter(
|
|
95
|
-
.reduce(
|
|
96
|
-
|
|
97
|
-
return [id,
|
|
101
|
+
const [start, end] = range.original.asTuple();
|
|
102
|
+
const minTime = initialData
|
|
103
|
+
.filter(srs => { var _a; return ((_a = axisAssignments.get(srs.name)) === null || _a === void 0 ? void 0 : _a.xAxis) === id; })
|
|
104
|
+
.reduce((tMin, series) => Math.min(tMin, !series.isEmpty() ? series.data[0].time : tMin), Infinity);
|
|
105
|
+
const startTime = minTime === Infinity ? 0 : minTime;
|
|
106
|
+
return [id, ContinuousAxisRange.from(startTime, startTime + end - start)];
|
|
98
107
|
})));
|
|
99
108
|
},
|
|
100
109
|
// ** not happy about this **
|
|
@@ -113,12 +122,12 @@ export function RasterPlot(props) {
|
|
|
113
122
|
function yCoordsFn(categorySize, lineWidth, margin) {
|
|
114
123
|
if (categorySize <= margin)
|
|
115
124
|
return {
|
|
116
|
-
yUpper:
|
|
117
|
-
yLower:
|
|
125
|
+
yUpper: y => y,
|
|
126
|
+
yLower: y => y + lineWidth
|
|
118
127
|
};
|
|
119
128
|
return {
|
|
120
|
-
yUpper:
|
|
121
|
-
yLower:
|
|
129
|
+
yUpper: y => y + margin,
|
|
130
|
+
yLower: y => y + categorySize - margin
|
|
122
131
|
};
|
|
123
132
|
}
|
|
124
133
|
/**
|
|
@@ -128,7 +137,7 @@ export function RasterPlot(props) {
|
|
|
128
137
|
* @param series An array of series names
|
|
129
138
|
* @param ranges A map holding the axis ID and its associated time range
|
|
130
139
|
*/
|
|
131
|
-
|
|
140
|
+
const onPan = useCallback((x, plotDimensions, ranges) => panHandler(axesForSeries, margin, setAxisIntervalFor, xAxesState)(x, plotDimensions, ranges), [axesForSeries, margin, setAxisIntervalFor, xAxesState]);
|
|
132
141
|
/**
|
|
133
142
|
* Called when the user uses the scroll wheel (or scroll gesture) to zoom in or out. Zooms in/out
|
|
134
143
|
* at the location of the mouse when the scroll wheel or gesture was applied.
|
|
@@ -138,79 +147,82 @@ export function RasterPlot(props) {
|
|
|
138
147
|
* @param series An array of series names
|
|
139
148
|
* @param ranges A map holding the axis ID and its associated time-range
|
|
140
149
|
*/
|
|
141
|
-
|
|
150
|
+
const onZoom = useCallback((transform, x, plotDimensions, ranges) => continuousAxisZoomHandler(axesForSeries, margin, setAxisIntervalFor, xAxesState)(transform, x, plotDimensions, ranges), [axesForSeries, margin, setAxisIntervalFor, xAxesState]);
|
|
142
151
|
/**
|
|
143
152
|
* @param timeRanges
|
|
144
153
|
* @param mainGElem
|
|
145
154
|
*/
|
|
146
|
-
|
|
155
|
+
const updatePlot = useCallback((timeRanges, mainGElem) => {
|
|
147
156
|
if (container) {
|
|
148
157
|
// select the svg element bind the data to them
|
|
149
|
-
|
|
158
|
+
const svg = d3.select(container);
|
|
150
159
|
// set up panning
|
|
151
160
|
if (panEnabled) {
|
|
152
|
-
|
|
153
|
-
.on("start",
|
|
154
|
-
.
|
|
155
|
-
|
|
156
|
-
|
|
161
|
+
const drag = d3.drag()
|
|
162
|
+
.on("start", () => {
|
|
163
|
+
d3.select(container).style("cursor", "move");
|
|
164
|
+
allowTooltipRef.current = false;
|
|
165
|
+
})
|
|
166
|
+
.on("drag", (event) => {
|
|
167
|
+
onPan(event.dx, plotDimensions, timeRanges);
|
|
157
168
|
// need to update the plot with the new time-ranges
|
|
158
169
|
updatePlotRef.current(timeRanges, mainGElem);
|
|
159
170
|
})
|
|
160
|
-
.on("end",
|
|
161
|
-
|
|
171
|
+
.on("end", () => {
|
|
172
|
+
d3.select(container).style("cursor", "auto");
|
|
173
|
+
allowTooltipRef.current = isSubscriptionClosed();
|
|
174
|
+
});
|
|
175
|
+
svg.call(drag);
|
|
162
176
|
}
|
|
163
177
|
// set up for zooming
|
|
164
178
|
if (zoomEnabled) {
|
|
165
|
-
|
|
166
|
-
.filter(
|
|
179
|
+
const zoom = d3.zoom()
|
|
180
|
+
.filter((event) => !zoomKeyModifiersRequired || event.shiftKey || event.ctrlKey)
|
|
167
181
|
.scaleExtent([0, 10])
|
|
168
182
|
.translateExtent([[margin.left, margin.top], [plotDimensions.width, plotDimensions.height]])
|
|
169
|
-
.on("zoom",
|
|
170
|
-
onZoom(event.transform, event.sourceEvent.offsetX - margin.left, plotDimensions,
|
|
183
|
+
.on("zoom", (event) => {
|
|
184
|
+
onZoom(event.transform, event.sourceEvent.offsetX - margin.left, plotDimensions, timeRanges);
|
|
171
185
|
updatePlotRef.current(timeRanges, mainGElem);
|
|
172
186
|
});
|
|
173
|
-
|
|
187
|
+
svg.call(zoom);
|
|
174
188
|
}
|
|
175
189
|
// enter, update, delete the raster data
|
|
176
|
-
dataRef.current.forEach(
|
|
177
|
-
|
|
190
|
+
dataRef.current.forEach(series => {
|
|
191
|
+
const [xAxis, yAxis] = axesFor(series.name, axisAssignments, axisId => xAxesState.axisFor(axisId).getOrUndefined(), axisId => yAxesState.axisFor(axisId).getOrUndefined());
|
|
178
192
|
// grab the series styles, or the defaults if none exist
|
|
179
|
-
|
|
193
|
+
const { color, lineWidth, margin: spikeLineMargin = spikeMargin } = seriesStyles.get(series.name) || Object.assign(Object.assign({}, defaultLineStyle()), { highlightColor: defaultLineStyle().color });
|
|
180
194
|
// only show the data for which the regex filter matches
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
.select(
|
|
195
|
+
const plotData = (series.name.match(seriesFilter)) ? series.data : [];
|
|
196
|
+
const seriesContainer = svg
|
|
197
|
+
.select(`#${series.name}-${chartId}-raster`)
|
|
184
198
|
.selectAll('line')
|
|
185
199
|
.data(plotData);
|
|
186
200
|
//
|
|
187
201
|
// enter new elements
|
|
188
|
-
|
|
202
|
+
const { yUpper, yLower } = yCoordsFn(yAxis.scale.bandwidth(), lineWidth, spikeLineMargin);
|
|
189
203
|
// grab the value (index) associated with the series name (this is a category axis)
|
|
190
|
-
|
|
204
|
+
const y = yAxis.scale(series.name) || 0;
|
|
191
205
|
// enter
|
|
192
206
|
seriesContainer
|
|
193
207
|
.enter()
|
|
194
208
|
.append('line')
|
|
195
|
-
.attr('x1',
|
|
196
|
-
.attr('x2',
|
|
197
|
-
.attr('y1',
|
|
198
|
-
.attr('y2',
|
|
209
|
+
.attr('x1', datum => datum.x)
|
|
210
|
+
.attr('x2', datum => datum.x)
|
|
211
|
+
.attr('y1', _ => yUpper(y))
|
|
212
|
+
.attr('y2', _ => yLower(y))
|
|
199
213
|
.attr('stroke', color)
|
|
200
214
|
.attr('stroke-width', lineWidth)
|
|
201
215
|
.attr('class', 'spikes-lines')
|
|
202
|
-
.on("mouseover",
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
.on("mouseleave", function (event) { return handleMouseLeaveSeries(series.name, event.currentTarget, seriesStyles, mouseLeaveHandlerFor("tooltip-" + chartId)); })
|
|
206
|
-
.each(function (datum) { return datum.x = xAxis.scale(datum.time); });
|
|
216
|
+
.on("mouseover", (event, datumArray) => handleMouseOverSeries(container, xAxis, series.name, datumArray, event, margin, seriesStyles, allowTooltipRef.current, mouseOverHandlerFor(`tooltip-${chartId}`)))
|
|
217
|
+
.on("mouseleave", event => handleMouseLeaveSeries(series.name, event.currentTarget, seriesStyles, mouseLeaveHandlerFor(`tooltip-${chartId}`)))
|
|
218
|
+
.each(datum => datum.x = xAxis.scale(datum.time));
|
|
207
219
|
// update
|
|
208
220
|
seriesContainer
|
|
209
|
-
.each(
|
|
210
|
-
.attr('x1',
|
|
211
|
-
.attr('x2',
|
|
212
|
-
.attr('y1',
|
|
213
|
-
.attr('y2',
|
|
221
|
+
.each(datum => datum.x = xAxis.scale(datum.time))
|
|
222
|
+
.attr('x1', datum => datum.x)
|
|
223
|
+
.attr('x2', datum => datum.x)
|
|
224
|
+
.attr('y1', _ => yUpper(y))
|
|
225
|
+
.attr('y2', _ => yLower(y))
|
|
214
226
|
.attr('stroke', color);
|
|
215
227
|
// exit old elements
|
|
216
228
|
seriesContainer.exit().remove();
|
|
@@ -222,60 +234,65 @@ export function RasterPlot(props) {
|
|
|
222
234
|
panEnabled,
|
|
223
235
|
plotDimensions,
|
|
224
236
|
seriesFilter, seriesStyles,
|
|
225
|
-
xAxesState
|
|
237
|
+
xAxesState, yAxesState,
|
|
226
238
|
zoomEnabled, zoomKeyModifiersRequired,
|
|
227
239
|
spikeMargin
|
|
228
240
|
]);
|
|
229
241
|
// need to keep the function references for use by the subscription, which forms a closure
|
|
230
242
|
// on them. without the references, the closures become stale, and resizing during streaming
|
|
231
243
|
// doesn't work properly
|
|
232
|
-
|
|
233
|
-
useEffect(
|
|
244
|
+
const updatePlotRef = useRef(noop);
|
|
245
|
+
useEffect(() => {
|
|
234
246
|
if (mainG !== null && container !== null) {
|
|
235
247
|
// when the update plot function doesn't yet exist, then create the container holding the plot
|
|
236
|
-
|
|
237
|
-
var clipPathId = setClipPath(chartId, svg, plotDimensions, margin);
|
|
248
|
+
const clipPathId = setClipPathG(chartId, mainG, plotDimensions);
|
|
238
249
|
if (updatePlotRef.current === noop) {
|
|
239
250
|
mainG
|
|
240
251
|
.selectAll('g')
|
|
241
|
-
.attr("clip-path",
|
|
252
|
+
.attr("clip-path", `url(#${clipPathId})`)
|
|
242
253
|
.data(dataRef.current)
|
|
243
254
|
.enter()
|
|
244
255
|
.append('g')
|
|
245
256
|
.attr('class', 'spikes-series')
|
|
246
|
-
.attr('id',
|
|
247
|
-
.attr('transform',
|
|
257
|
+
.attr('id', series => `${series.name}-${chartId}-raster`)
|
|
258
|
+
.attr('transform', `translate(${margin.left}, ${margin.top})`);
|
|
248
259
|
}
|
|
249
260
|
else {
|
|
250
261
|
mainG
|
|
251
262
|
.selectAll('g')
|
|
252
|
-
.attr("clip-path",
|
|
263
|
+
.attr("clip-path", `url(#${clipPathId})`);
|
|
253
264
|
}
|
|
254
265
|
updatePlotRef.current = updatePlot;
|
|
255
266
|
}
|
|
256
267
|
}, [chartId, container, mainG, margin, plotDimensions, updatePlot]);
|
|
257
268
|
// grab a reference to the function used to update the time ranges and update that reference
|
|
258
269
|
// if the function changes (solve for stale closures)
|
|
259
|
-
|
|
260
|
-
useEffect(
|
|
261
|
-
onUpdateTimeRef.current =
|
|
262
|
-
}, [
|
|
270
|
+
const onUpdateTimeRef = useRef(updateAxisRanges);
|
|
271
|
+
useEffect(() => {
|
|
272
|
+
onUpdateTimeRef.current = updateAxisRanges;
|
|
273
|
+
}, [updateAxisRanges]);
|
|
263
274
|
// memoized function for subscribing to the chart-data observable
|
|
264
|
-
|
|
275
|
+
const subscribe = useCallback(() => {
|
|
265
276
|
if (seriesObservable === undefined || mainG === null)
|
|
266
277
|
return undefined;
|
|
267
278
|
if (withCadenceOf !== undefined) {
|
|
268
|
-
return
|
|
279
|
+
return subscriptionTimeSeriesWithCadenceFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot,
|
|
280
|
+
// as new data flows into the subscription, the subscription
|
|
281
|
+
// updates this map directly (for performance)
|
|
282
|
+
seriesRef.current, (axisId, end) => currentTimeRef.current.set(axisId, end), withCadenceOf);
|
|
269
283
|
}
|
|
270
|
-
return
|
|
284
|
+
return subscriptionTimeSeriesFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot,
|
|
285
|
+
// as new data flows into the subscription, the subscription
|
|
286
|
+
// updates this map directly (for performance)
|
|
287
|
+
seriesRef.current, (axisId, end) => currentTimeRef.current.set(axisId, end));
|
|
271
288
|
}, [
|
|
272
289
|
axisAssignments, dropDataAfter, mainG,
|
|
273
290
|
onSubscribe, onUpdateData,
|
|
274
291
|
seriesObservable, updateTimingAndPlot, windowingTime, xAxesState,
|
|
275
292
|
withCadenceOf
|
|
276
293
|
]);
|
|
277
|
-
|
|
278
|
-
useEffect(
|
|
294
|
+
const timeRangesRef = useRef(new Map());
|
|
295
|
+
useEffect(() => {
|
|
279
296
|
if (container && mainG) {
|
|
280
297
|
// so this gets a bit complicated. the time-ranges need to be updated whenever the time-ranges
|
|
281
298
|
// change. for example, as data is streamed in, the times change, and then we need to update the
|
|
@@ -286,15 +303,18 @@ export function RasterPlot(props) {
|
|
|
286
303
|
if (timeRangesRef.current.size === 0) {
|
|
287
304
|
// when no time-ranges have yet been created, then create them and hold on to a mutable
|
|
288
305
|
// reference to them
|
|
289
|
-
timeRangesRef.current =
|
|
306
|
+
timeRangesRef.current = continuousAxisRanges(xAxesState.axes);
|
|
290
307
|
}
|
|
291
308
|
else {
|
|
292
309
|
// when the time-ranges already exist, then we want to update the time-ranges for each
|
|
293
310
|
// existing time-range in a way that maintains the original scale.
|
|
294
|
-
|
|
311
|
+
const intervals = continuousAxisIntervals(xAxesState.axes);
|
|
295
312
|
timeRangesRef.current
|
|
296
|
-
.forEach(
|
|
297
|
-
|
|
313
|
+
.forEach((range, id, rangesMap) => {
|
|
314
|
+
const [start, end] = Optional.ofNullable(intervals.get(id))
|
|
315
|
+
.map(interval => interval.asTuple())
|
|
316
|
+
.getOrThrow(() => new Error(`Unable to retrieve interval for axis; axis_id: ${id}`));
|
|
317
|
+
// .getOrElse([NaN, NaN])
|
|
298
318
|
if (!isNaN(start) && !isNaN(end)) {
|
|
299
319
|
// update the reference map with the new (start, end) portion of the range,
|
|
300
320
|
// while keeping the original scale intact
|
|
@@ -309,15 +329,16 @@ export function RasterPlot(props) {
|
|
|
309
329
|
// is changed to `true` and we haven't subscribed yet, then subscribe. when the
|
|
310
330
|
// `shouldSubscribe` is `false` and we had subscribed, then unsubscribe. otherwise,
|
|
311
331
|
// do nothing.
|
|
312
|
-
|
|
313
|
-
useEffect(function () {
|
|
332
|
+
useEffect(() => {
|
|
314
333
|
var _a;
|
|
315
334
|
if (shouldSubscribe && subscriptionRef.current === undefined) {
|
|
316
335
|
subscriptionRef.current = subscribe();
|
|
336
|
+
allowTooltipRef.current = false;
|
|
317
337
|
}
|
|
318
338
|
else if (!shouldSubscribe && subscriptionRef.current !== undefined) {
|
|
319
339
|
(_a = subscriptionRef.current) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
320
340
|
subscriptionRef.current = undefined;
|
|
341
|
+
allowTooltipRef.current = true;
|
|
321
342
|
}
|
|
322
343
|
}, [shouldSubscribe, subscribe]);
|
|
323
344
|
return null;
|
|
@@ -335,14 +356,14 @@ export function RasterPlot(props) {
|
|
|
335
356
|
* the second element.
|
|
336
357
|
*/
|
|
337
358
|
function axesFor(seriesName, axisAssignments, xAxisFor, yAxisFor) {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
359
|
+
const axes = axisAssignments.get(seriesName);
|
|
360
|
+
const xAxis = xAxisFor((axes === null || axes === void 0 ? void 0 : axes.xAxis) || "");
|
|
361
|
+
const xAxisLinear = xAxis;
|
|
341
362
|
if (xAxis && !xAxisLinear) {
|
|
342
363
|
throw Error("Raster plot requires that x-axis be of type LinearAxis");
|
|
343
364
|
}
|
|
344
|
-
|
|
345
|
-
|
|
365
|
+
const yAxis = yAxisFor((axes === null || axes === void 0 ? void 0 : axes.yAxis) || "");
|
|
366
|
+
const yAxisCategory = yAxis;
|
|
346
367
|
if (yAxis && !yAxisCategory) {
|
|
347
368
|
throw Error("Raster plot requires that y-axis be of type CategoryAxis");
|
|
348
369
|
}
|
|
@@ -350,33 +371,31 @@ function axesFor(seriesName, axisAssignments, xAxisFor, yAxisFor) {
|
|
|
350
371
|
}
|
|
351
372
|
/**
|
|
352
373
|
* Renders a tooltip showing the neuron, spike time, and the spike strength when the mouse hovers over a spike.
|
|
353
|
-
* @param chartId The ID of the chart
|
|
354
374
|
* @param container The chart container
|
|
355
375
|
* @param xAxis The x-axis
|
|
356
376
|
* @param seriesName The name of the series (i.e. the neuron ID)
|
|
357
377
|
* @param selectedDatum The selected datum
|
|
358
378
|
* @param event The mouse-over series event
|
|
359
379
|
* @param margin The plot margin
|
|
360
|
-
* @param tooltipStyle The tooltip style information
|
|
361
380
|
* @param seriesStyles The series style information (needed for (un)highlighting)
|
|
362
|
-
* @param
|
|
381
|
+
* @param allowTooltip When set to `false` won't show tooltip, even if it is visible (used by pan)
|
|
363
382
|
* @param mouseOverHandlerFor The handler for the mouse over (registered by the <Tooltip/>)
|
|
364
383
|
*/
|
|
365
|
-
function handleMouseOverSeries(
|
|
384
|
+
function handleMouseOverSeries(container, xAxis, seriesName, selectedDatum, event, margin, seriesStyles, allowTooltip, mouseOverHandlerFor) {
|
|
366
385
|
// grab the time needed for the tooltip ID
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
386
|
+
const [x, y] = d3.pointer(event, container);
|
|
387
|
+
const time = Math.round(xAxis.scale.invert(x - margin.left));
|
|
388
|
+
const { highlightColor, highlightWidth } = seriesStyles.get(seriesName) || defaultLineStyle();
|
|
370
389
|
// Use d3 to select element, change color and size
|
|
371
390
|
d3.select(event.currentTarget)
|
|
372
391
|
.attr('stroke', highlightColor)
|
|
373
392
|
.attr('stroke-width', highlightWidth);
|
|
374
|
-
if (mouseOverHandlerFor) {
|
|
393
|
+
if (mouseOverHandlerFor && allowTooltip) {
|
|
375
394
|
// the contract for the mouse over handler is for a time-series, but here we only
|
|
376
395
|
// need one point, the selected datum, and so we convert it into an array of point
|
|
377
396
|
// (i.e. a time-series). The category tooltip is (and custom ones, must) be
|
|
378
397
|
// written to expect only the selected point
|
|
379
|
-
mouseOverHandlerFor(seriesName, time, [selectedDatum], [x, y]);
|
|
398
|
+
mouseOverHandlerFor(seriesName, time, { series: [selectedDatum], metadata: {} }, [x, y]);
|
|
380
399
|
}
|
|
381
400
|
}
|
|
382
401
|
/**
|
|
@@ -387,7 +406,7 @@ function handleMouseOverSeries(chartId, container, xAxis, seriesName, selectedDa
|
|
|
387
406
|
* @param mouseLeaverHandlerFor Registered handler for the series when the mouse leaves
|
|
388
407
|
*/
|
|
389
408
|
function handleMouseLeaveSeries(seriesName, segment, seriesStyles, mouseLeaverHandlerFor) {
|
|
390
|
-
|
|
409
|
+
const { color, lineWidth } = seriesStyles.get(seriesName) || defaultLineStyle();
|
|
391
410
|
d3.select(segment)
|
|
392
411
|
.attr('stroke', color)
|
|
393
412
|
.attr('stroke-width', lineWidth);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RasterPlot.js","sourceRoot":"","sources":["../../../../../src/app/charts/plots/RasterPlot.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as d3 from "d3";
|
|
2
2
|
import { AxesAssignment } from "./plot";
|
|
3
|
+
import { TimeWindowBehavior } from "../subscriptions/subscriptions";
|
|
3
4
|
interface Props {
|
|
4
5
|
/**
|
|
5
6
|
* Holds the mapping between a series and the axis it uses (is assigned). The
|
|
@@ -39,6 +40,7 @@ interface Props {
|
|
|
39
40
|
* to the current time.
|
|
40
41
|
*/
|
|
41
42
|
withCadenceOf?: number;
|
|
43
|
+
timeWindowBehavior?: TimeWindowBehavior;
|
|
42
44
|
}
|
|
43
45
|
/**
|
|
44
46
|
* Renders a streaming scatter plot for the series in the initial data and those sourced by the
|
|
@@ -50,14 +52,14 @@ interface Props {
|
|
|
50
52
|
* @constructor
|
|
51
53
|
* @example
|
|
52
54
|
<ScatterPlot
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
interpolation={interpolation}
|
|
56
|
+
axisAssignments={new Map([
|
|
57
|
+
['test2', assignAxes("x-axis-2", "y-axis-2")],
|
|
58
|
+
])}
|
|
59
|
+
dropDataAfter={10000}
|
|
60
|
+
panEnabled={true}
|
|
61
|
+
zoomEnabled={true}
|
|
62
|
+
zoomKeyModifiersRequired={true}
|
|
61
63
|
/>
|
|
62
64
|
*/
|
|
63
65
|
export declare function ScatterPlot(props: Props): null;
|