stream-charts 1.2.1 → 2.0.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/LICENSE +21 -0
- package/README.md +809 -1022
- package/changes.md +36 -0
- package/dist/app/charts/Chart.d.ts +35 -139
- package/dist/app/charts/Chart.d.ts.map +1 -0
- package/dist/app/charts/Chart.js +74 -65
- package/dist/app/charts/Chart.js.map +1 -1
- package/dist/app/charts/axes/AxesState.d.ts +26 -18
- package/dist/app/charts/axes/AxesState.d.ts.map +1 -0
- package/dist/app/charts/axes/AxesState.js +26 -24
- package/dist/app/charts/axes/AxesState.js.map +1 -1
- package/dist/app/charts/axes/AxisInterval.d.ts +44 -26
- package/dist/app/charts/axes/AxisInterval.d.ts.map +1 -0
- package/dist/app/charts/axes/AxisInterval.js +48 -29
- package/dist/app/charts/axes/AxisInterval.js.map +1 -1
- package/dist/app/charts/axes/BaseAxisRange.d.ts +46 -22
- package/dist/app/charts/axes/BaseAxisRange.d.ts.map +1 -0
- package/dist/app/charts/axes/BaseAxisRange.js +17 -12
- package/dist/app/charts/axes/BaseAxisRange.js.map +1 -1
- package/dist/app/charts/axes/ContinuousAxis.d.ts +47 -6
- package/dist/app/charts/axes/ContinuousAxis.d.ts.map +1 -0
- package/dist/app/charts/axes/ContinuousAxis.js +160 -27
- package/dist/app/charts/axes/ContinuousAxis.js.map +1 -1
- package/dist/app/charts/axes/ContinuousAxisRange.d.ts +29 -10
- package/dist/app/charts/axes/ContinuousAxisRange.d.ts.map +1 -0
- package/dist/app/charts/axes/ContinuousAxisRange.js +29 -11
- package/dist/app/charts/axes/ContinuousAxisRange.js.map +1 -1
- package/dist/app/charts/axes/EmptyAxis.d.ts +5 -2
- package/dist/app/charts/axes/EmptyAxis.d.ts.map +1 -0
- package/dist/app/charts/axes/EmptyAxis.js +30 -9
- package/dist/app/charts/axes/EmptyAxis.js.map +1 -1
- package/dist/app/charts/axes/OrdinalAxis.d.ts +5 -3
- package/dist/app/charts/axes/OrdinalAxis.d.ts.map +1 -0
- package/dist/app/charts/axes/OrdinalAxis.js +39 -16
- package/dist/app/charts/axes/OrdinalAxis.js.map +1 -1
- package/dist/app/charts/axes/OrdinalAxisRange.d.ts +76 -13
- package/dist/app/charts/axes/OrdinalAxisRange.d.ts.map +1 -0
- package/dist/app/charts/axes/OrdinalAxisRange.js +95 -16
- package/dist/app/charts/axes/OrdinalAxisRange.js.map +1 -1
- package/dist/app/charts/axes/autoScale.d.ts +111 -0
- package/dist/app/charts/axes/autoScale.d.ts.map +1 -0
- package/dist/app/charts/axes/autoScale.js +188 -0
- package/dist/app/charts/axes/autoScale.js.map +1 -0
- package/dist/app/charts/axes/axes.d.ts +273 -150
- package/dist/app/charts/axes/axes.d.ts.map +1 -0
- package/dist/app/charts/axes/axes.js +808 -583
- package/dist/app/charts/axes/axes.js.map +1 -1
- package/dist/app/charts/d3types.d.ts +40 -11
- package/dist/app/charts/d3types.d.ts.map +1 -0
- package/dist/app/charts/d3types.js +3 -0
- package/dist/app/charts/d3types.js.map +1 -1
- package/dist/app/charts/datasources/StreamingDataSource.d.ts +149 -0
- package/dist/app/charts/datasources/StreamingDataSource.d.ts.map +1 -0
- package/dist/app/charts/datasources/StreamingDataSource.js +110 -0
- package/dist/app/charts/datasources/StreamingDataSource.js.map +1 -0
- package/dist/app/charts/datasources/iteratesDataSource.d.ts +73 -0
- package/dist/app/charts/datasources/iteratesDataSource.d.ts.map +1 -0
- package/dist/app/charts/datasources/iteratesDataSource.js +87 -0
- package/dist/app/charts/datasources/iteratesDataSource.js.map +1 -0
- package/dist/app/charts/datasources/ordinalDataSource.d.ts +75 -0
- package/dist/app/charts/datasources/ordinalDataSource.d.ts.map +1 -0
- package/dist/app/charts/datasources/ordinalDataSource.js +135 -0
- package/dist/app/charts/datasources/ordinalDataSource.js.map +1 -0
- package/dist/app/charts/datasources/outlierDataSource.d.ts +53 -0
- package/dist/app/charts/datasources/outlierDataSource.d.ts.map +1 -0
- package/dist/app/charts/datasources/outlierDataSource.js +57 -0
- package/dist/app/charts/datasources/outlierDataSource.js.map +1 -0
- package/dist/app/charts/datasources/timeSeriesDataSource.d.ts +77 -0
- package/dist/app/charts/datasources/timeSeriesDataSource.d.ts.map +1 -0
- package/dist/app/charts/datasources/timeSeriesDataSource.js +85 -0
- package/dist/app/charts/datasources/timeSeriesDataSource.js.map +1 -0
- package/dist/app/charts/filters/regexFilter.d.ts +31 -4
- package/dist/app/charts/filters/regexFilter.d.ts.map +1 -0
- package/dist/app/charts/filters/regexFilter.js +38 -4
- package/dist/app/charts/filters/regexFilter.js.map +1 -1
- package/dist/app/charts/hooks/AxesProvider.d.ts +21 -0
- package/dist/app/charts/hooks/AxesProvider.d.ts.map +1 -0
- package/dist/app/charts/hooks/AxesProvider.js +213 -0
- package/dist/app/charts/hooks/AxesProvider.js.map +1 -0
- package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts +25 -0
- package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts.map +1 -0
- package/dist/app/charts/hooks/CanvasSurfaceProvider.js +76 -0
- package/dist/app/charts/hooks/CanvasSurfaceProvider.js.map +1 -0
- package/dist/app/charts/hooks/ChartProvider.d.ts +40 -0
- package/dist/app/charts/hooks/ChartProvider.d.ts.map +1 -0
- package/dist/app/charts/hooks/ChartProvider.js +33 -0
- package/dist/app/charts/hooks/ChartProvider.js.map +1 -0
- package/dist/app/charts/hooks/InteractionProvider.d.ts +23 -0
- package/dist/app/charts/hooks/InteractionProvider.d.ts.map +1 -0
- package/dist/app/charts/hooks/InteractionProvider.js +60 -0
- package/dist/app/charts/hooks/InteractionProvider.js.map +1 -0
- package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts +16 -0
- package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts.map +1 -0
- package/dist/app/charts/hooks/PlotDimensionsProvider.js +76 -0
- package/dist/app/charts/hooks/PlotDimensionsProvider.js.map +1 -0
- package/dist/app/charts/hooks/defaultAxesValues.d.ts +11 -0
- package/dist/app/charts/hooks/defaultAxesValues.d.ts.map +1 -0
- package/dist/app/charts/hooks/defaultAxesValues.js +36 -0
- package/dist/app/charts/hooks/defaultAxesValues.js.map +1 -0
- package/dist/app/charts/hooks/defaultMouseValues.d.ts +9 -0
- package/dist/app/charts/hooks/defaultMouseValues.d.ts.map +1 -0
- package/dist/app/charts/hooks/defaultMouseValues.js +23 -0
- package/dist/app/charts/hooks/defaultMouseValues.js.map +1 -0
- package/dist/app/charts/hooks/defaultPlotDimensions.d.ts +13 -0
- package/dist/app/charts/hooks/defaultPlotDimensions.d.ts.map +1 -0
- package/dist/app/charts/hooks/defaultPlotDimensions.js +23 -0
- package/dist/app/charts/hooks/defaultPlotDimensions.js.map +1 -0
- package/dist/app/charts/hooks/defaultTooltipValues.d.ts +9 -0
- package/dist/app/charts/hooks/defaultTooltipValues.d.ts.map +1 -0
- package/dist/app/charts/hooks/defaultTooltipValues.js +21 -0
- package/dist/app/charts/hooks/defaultTooltipValues.js.map +1 -0
- package/dist/app/charts/hooks/defaultUseChartValues.d.ts +14 -0
- package/dist/app/charts/hooks/defaultUseChartValues.d.ts.map +1 -0
- package/dist/app/charts/hooks/defaultUseChartValues.js +30 -0
- package/dist/app/charts/hooks/defaultUseChartValues.js.map +1 -0
- package/dist/app/charts/hooks/useAxes.d.ts +49 -36
- package/dist/app/charts/hooks/useAxes.d.ts.map +1 -0
- package/dist/app/charts/hooks/useAxes.js +16 -176
- package/dist/app/charts/hooks/useAxes.js.map +1 -1
- package/dist/app/charts/hooks/useCanvasSurface.d.ts +25 -0
- package/dist/app/charts/hooks/useCanvasSurface.d.ts.map +1 -0
- package/dist/app/charts/hooks/useCanvasSurface.js +18 -0
- package/dist/app/charts/hooks/useCanvasSurface.js.map +1 -0
- package/dist/app/charts/hooks/useChart.d.ts +30 -44
- package/dist/app/charts/hooks/useChart.d.ts.map +1 -0
- package/dist/app/charts/hooks/useChart.js +26 -48
- package/dist/app/charts/hooks/useChart.js.map +1 -1
- package/dist/app/charts/hooks/useDataSource.d.ts +68 -0
- package/dist/app/charts/hooks/useDataSource.d.ts.map +1 -0
- package/dist/app/charts/hooks/useDataSource.js +63 -0
- package/dist/app/charts/hooks/useDataSource.js.map +1 -0
- package/dist/app/charts/hooks/useHoveredSeries.d.ts +25 -0
- package/dist/app/charts/hooks/useHoveredSeries.d.ts.map +1 -0
- package/dist/app/charts/hooks/useHoveredSeries.js +15 -0
- package/dist/app/charts/hooks/useHoveredSeries.js.map +1 -0
- package/dist/app/charts/hooks/useMouse.d.ts +46 -22
- package/dist/app/charts/hooks/useMouse.d.ts.map +1 -0
- package/dist/app/charts/hooks/useMouse.js +12 -56
- package/dist/app/charts/hooks/useMouse.js.map +1 -1
- package/dist/app/charts/hooks/usePlotDimensions.d.ts +25 -13
- package/dist/app/charts/hooks/usePlotDimensions.d.ts.map +1 -0
- package/dist/app/charts/hooks/usePlotDimensions.js +6 -62
- package/dist/app/charts/hooks/usePlotDimensions.js.map +1 -1
- package/dist/app/charts/hooks/useTooltip.d.ts +24 -26
- package/dist/app/charts/hooks/useTooltip.d.ts.map +1 -0
- package/dist/app/charts/hooks/useTooltip.js +12 -42
- package/dist/app/charts/hooks/useTooltip.js.map +1 -1
- package/dist/app/charts/index.d.ts +66 -0
- package/dist/app/charts/index.d.ts.map +1 -0
- package/dist/app/charts/index.js +87 -0
- package/dist/app/charts/index.js.map +1 -0
- package/dist/app/charts/legends/Legend.d.ts +33 -12
- package/dist/app/charts/legends/Legend.d.ts.map +1 -0
- package/dist/app/charts/legends/Legend.js +138 -379
- package/dist/app/charts/legends/Legend.js.map +1 -1
- package/dist/app/charts/legends/constants.d.ts +19 -0
- package/dist/app/charts/legends/constants.d.ts.map +1 -0
- package/dist/app/charts/legends/constants.js +34 -0
- package/dist/app/charts/legends/constants.js.map +1 -0
- package/dist/app/charts/observables/ChartData.d.ts +1 -0
- package/dist/app/charts/observables/ChartData.d.ts.map +1 -0
- package/dist/app/charts/observables/iterates.d.ts +13 -7
- package/dist/app/charts/observables/iterates.d.ts.map +1 -0
- package/dist/app/charts/observables/iterates.js +42 -9
- package/dist/app/charts/observables/iterates.js.map +1 -1
- package/dist/app/charts/observables/ordinals.d.ts +70 -12
- package/dist/app/charts/observables/ordinals.d.ts.map +1 -0
- package/dist/app/charts/observables/ordinals.js +127 -48
- package/dist/app/charts/observables/ordinals.js.map +1 -1
- package/dist/app/charts/observables/outliers.d.ts +18 -0
- package/dist/app/charts/observables/outliers.d.ts.map +1 -0
- package/dist/app/charts/observables/outliers.js +2 -0
- package/dist/app/charts/observables/outliers.js.map +1 -0
- package/dist/app/charts/plots/BarPlot.d.ts +87 -13
- package/dist/app/charts/plots/BarPlot.d.ts.map +1 -0
- package/dist/app/charts/plots/BarPlot.js +603 -356
- package/dist/app/charts/plots/BarPlot.js.map +1 -1
- package/dist/app/charts/plots/OutlierPlot.d.ts +123 -0
- package/dist/app/charts/plots/OutlierPlot.d.ts.map +1 -0
- package/dist/app/charts/plots/OutlierPlot.js +430 -0
- package/dist/app/charts/plots/OutlierPlot.js.map +1 -0
- package/dist/app/charts/plots/PoincarePlot.d.ts +92 -14
- package/dist/app/charts/plots/PoincarePlot.d.ts.map +1 -0
- package/dist/app/charts/plots/PoincarePlot.js +523 -364
- package/dist/app/charts/plots/PoincarePlot.js.map +1 -1
- package/dist/app/charts/plots/RasterPlot.d.ts +31 -10
- package/dist/app/charts/plots/RasterPlot.d.ts.map +1 -0
- package/dist/app/charts/plots/RasterPlot.js +198 -306
- package/dist/app/charts/plots/RasterPlot.js.map +1 -1
- package/dist/app/charts/plots/ScatterPlot.d.ts +77 -21
- package/dist/app/charts/plots/ScatterPlot.d.ts.map +1 -0
- package/dist/app/charts/plots/ScatterPlot.js +359 -302
- package/dist/app/charts/plots/ScatterPlot.js.map +1 -1
- package/dist/app/charts/plots/autoScaleYAxes.d.ts +43 -0
- package/dist/app/charts/plots/autoScaleYAxes.d.ts.map +1 -0
- package/dist/app/charts/plots/autoScaleYAxes.js +71 -0
- package/dist/app/charts/plots/autoScaleYAxes.js.map +1 -0
- package/dist/app/charts/plots/colorizedLine.d.ts +61 -0
- package/dist/app/charts/plots/colorizedLine.d.ts.map +1 -0
- package/dist/app/charts/plots/colorizedLine.js +157 -0
- package/dist/app/charts/plots/colorizedLine.js.map +1 -0
- package/dist/app/charts/plots/constants.d.ts +7 -0
- package/dist/app/charts/plots/constants.d.ts.map +1 -0
- package/dist/app/charts/plots/constants.js +11 -0
- package/dist/app/charts/plots/constants.js.map +1 -0
- package/dist/app/charts/plots/hitTesting.d.ts +88 -0
- package/dist/app/charts/plots/hitTesting.d.ts.map +1 -0
- package/dist/app/charts/plots/hitTesting.js +136 -0
- package/dist/app/charts/plots/hitTesting.js.map +1 -0
- package/dist/app/charts/plots/plot.d.ts +52 -16
- package/dist/app/charts/plots/plot.d.ts.map +1 -0
- package/dist/app/charts/plots/plot.js +108 -35
- package/dist/app/charts/plots/plot.js.map +1 -1
- package/dist/app/charts/plots/useCanvasZoomPan.d.ts +119 -0
- package/dist/app/charts/plots/useCanvasZoomPan.d.ts.map +1 -0
- package/dist/app/charts/plots/useCanvasZoomPan.js +113 -0
- package/dist/app/charts/plots/useCanvasZoomPan.js.map +1 -0
- package/dist/app/charts/plots/useStreamingTimeAxes.d.ts +103 -0
- package/dist/app/charts/plots/useStreamingTimeAxes.d.ts.map +1 -0
- package/dist/app/charts/plots/useStreamingTimeAxes.js +257 -0
- package/dist/app/charts/plots/useStreamingTimeAxes.js.map +1 -0
- package/dist/app/charts/series/baseSeries.d.ts +60 -8
- package/dist/app/charts/series/baseSeries.d.ts.map +1 -0
- package/dist/app/charts/series/baseSeries.js +53 -8
- package/dist/app/charts/series/baseSeries.js.map +1 -1
- package/dist/app/charts/series/iterateSeries.d.ts +9 -8
- package/dist/app/charts/series/iterateSeries.d.ts.map +1 -0
- package/dist/app/charts/series/iterateSeries.js +7 -7
- package/dist/app/charts/series/iterateSeries.js.map +1 -1
- package/dist/app/charts/series/ordinalSeries.d.ts +27 -13
- package/dist/app/charts/series/ordinalSeries.d.ts.map +1 -0
- package/dist/app/charts/series/ordinalSeries.js +29 -15
- package/dist/app/charts/series/ordinalSeries.js.map +1 -1
- package/dist/app/charts/series/outlierSeries.d.ts +142 -0
- package/dist/app/charts/series/outlierSeries.d.ts.map +1 -0
- package/dist/app/charts/series/outlierSeries.js +82 -0
- package/dist/app/charts/series/outlierSeries.js.map +1 -0
- package/dist/app/charts/series/timeSeries.d.ts +13 -9
- package/dist/app/charts/series/timeSeries.d.ts.map +1 -0
- package/dist/app/charts/series/timeSeries.js +6 -3
- package/dist/app/charts/series/timeSeries.js.map +1 -1
- package/dist/app/charts/series/timeSeriesChartData.d.ts +18 -10
- package/dist/app/charts/series/timeSeriesChartData.d.ts.map +1 -0
- package/dist/app/charts/series/timeSeriesChartData.js +28 -14
- package/dist/app/charts/series/timeSeriesChartData.js.map +1 -1
- package/dist/app/charts/styling/barPlotStyle.d.ts +46 -2
- package/dist/app/charts/styling/barPlotStyle.d.ts.map +1 -0
- package/dist/app/charts/styling/barPlotStyle.js +37 -3
- package/dist/app/charts/styling/barPlotStyle.js.map +1 -1
- package/dist/app/charts/styling/canvasStyle.d.ts +53 -0
- package/dist/app/charts/styling/canvasStyle.d.ts.map +1 -0
- package/dist/app/charts/styling/canvasStyle.js +71 -0
- package/dist/app/charts/styling/canvasStyle.js.map +1 -0
- package/dist/app/charts/styling/margins.d.ts +21 -2
- package/dist/app/charts/styling/margins.d.ts.map +1 -0
- package/dist/app/charts/styling/margins.js +25 -4
- package/dist/app/charts/styling/margins.js.map +1 -1
- package/dist/app/charts/styling/svgStyle.d.ts +10 -56
- package/dist/app/charts/styling/svgStyle.d.ts.map +1 -0
- package/dist/app/charts/styling/svgStyle.js +3 -78
- package/dist/app/charts/styling/svgStyle.js.map +1 -1
- package/dist/app/charts/subscriptions/viewDrivers.d.ts +124 -0
- package/dist/app/charts/subscriptions/viewDrivers.d.ts.map +1 -0
- package/dist/app/charts/subscriptions/viewDrivers.js +338 -0
- package/dist/app/charts/subscriptions/viewDrivers.js.map +1 -0
- package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts +12 -78
- package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/BarPlotTooltipContent.js +65 -257
- package/dist/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -1
- package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts +9 -0
- package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js +16 -0
- package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js.map +1 -0
- package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts +30 -0
- package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js +26 -0
- package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js.map +1 -0
- package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +22 -72
- package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js +104 -171
- package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -1
- package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts +32 -8
- package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/RasterPlotTooltipContent.js +62 -115
- package/dist/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -1
- package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts +39 -12
- package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js +162 -134
- package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -1
- package/dist/app/charts/tooltips/Tooltip.d.ts +27 -32
- package/dist/app/charts/tooltips/Tooltip.d.ts.map +1 -0
- package/dist/app/charts/tooltips/Tooltip.js +37 -81
- package/dist/app/charts/tooltips/Tooltip.js.map +1 -1
- package/dist/app/charts/tooltips/TooltipContent.d.ts +81 -0
- package/dist/app/charts/tooltips/TooltipContent.d.ts.map +1 -0
- package/dist/app/charts/tooltips/TooltipContent.js +99 -0
- package/dist/app/charts/tooltips/TooltipContent.js.map +1 -0
- package/dist/app/charts/tooltips/tooltipUtils.d.ts +186 -36
- package/dist/app/charts/tooltips/tooltipUtils.d.ts.map +1 -0
- package/dist/app/charts/tooltips/tooltipUtils.js +277 -48
- package/dist/app/charts/tooltips/tooltipUtils.js.map +1 -1
- package/dist/app/charts/tooltips/useOutlierTooltip.d.ts +59 -0
- package/dist/app/charts/tooltips/useOutlierTooltip.d.ts.map +1 -0
- package/dist/app/charts/tooltips/useOutlierTooltip.js +16 -0
- package/dist/app/charts/tooltips/useOutlierTooltip.js.map +1 -0
- package/dist/app/charts/tooltips/useTooltipPlacement.d.ts +51 -0
- package/dist/app/charts/tooltips/useTooltipPlacement.d.ts.map +1 -0
- package/dist/app/charts/tooltips/useTooltipPlacement.js +52 -0
- package/dist/app/charts/tooltips/useTooltipPlacement.js.map +1 -0
- package/dist/app/charts/tooltips/useTooltipStyle.d.ts +11 -0
- package/dist/app/charts/tooltips/useTooltipStyle.d.ts.map +1 -0
- package/dist/app/charts/tooltips/useTooltipStyle.js +14 -0
- package/dist/app/charts/tooltips/useTooltipStyle.js.map +1 -0
- package/dist/app/charts/trackers/Tracker.d.ts +22 -6
- package/dist/app/charts/trackers/Tracker.d.ts.map +1 -0
- package/dist/app/charts/trackers/Tracker.js +36 -22
- package/dist/app/charts/trackers/Tracker.js.map +1 -1
- package/dist/app/charts/trackers/trackerUtils.d.ts +40 -18
- package/dist/app/charts/trackers/trackerUtils.d.ts.map +1 -0
- package/dist/app/charts/trackers/trackerUtils.js +213 -300
- package/dist/app/charts/trackers/trackerUtils.js.map +1 -1
- package/dist/app/charts/utils.d.ts +72 -33
- package/dist/app/charts/utils.d.ts.map +1 -0
- package/dist/app/charts/utils.js +87 -42
- package/dist/app/charts/utils.js.map +1 -1
- package/dist/index.d.ts +2 -45
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -72
- package/dist/index.js.map +1 -1
- package/package.json +87 -46
- package/src/app/charts/Chart.tsx +132 -168
- package/src/app/charts/axes/AxesState.ts +27 -29
- package/src/app/charts/axes/AxisInterval.ts +57 -32
- package/src/app/charts/axes/BaseAxisRange.ts +47 -27
- package/src/app/charts/axes/ContinuousAxis.tsx +235 -39
- package/src/app/charts/axes/ContinuousAxisRange.ts +29 -11
- package/src/app/charts/axes/EmptyAxis.tsx +52 -17
- package/src/app/charts/axes/OrdinalAxis.tsx +54 -28
- package/src/app/charts/axes/OrdinalAxisRange.ts +96 -16
- package/src/app/charts/axes/autoScale.ts +244 -0
- package/src/app/charts/axes/axes.ts +954 -735
- package/src/app/charts/d3types.ts +42 -13
- package/src/app/charts/datasources/StreamingDataSource.ts +214 -0
- package/src/app/charts/datasources/iteratesDataSource.ts +122 -0
- package/src/app/charts/datasources/ordinalDataSource.ts +205 -0
- package/src/app/charts/datasources/outlierDataSource.ts +90 -0
- package/src/app/charts/datasources/timeSeriesDataSource.ts +133 -0
- package/src/app/charts/filters/regexFilter.ts +45 -5
- package/src/app/charts/hooks/AxesProvider.tsx +301 -0
- package/src/app/charts/hooks/CanvasSurfaceProvider.tsx +117 -0
- package/src/app/charts/hooks/ChartProvider.tsx +79 -0
- package/src/app/charts/hooks/InteractionProvider.tsx +88 -0
- package/src/app/charts/hooks/PlotDimensionsProvider.tsx +109 -0
- package/src/app/charts/hooks/defaultAxesValues.ts +40 -0
- package/src/app/charts/hooks/defaultMouseValues.ts +24 -0
- package/src/app/charts/hooks/defaultPlotDimensions.ts +27 -0
- package/src/app/charts/hooks/defaultTooltipValues.tsx +23 -0
- package/src/app/charts/hooks/defaultUseChartValues.tsx +36 -0
- package/src/app/charts/hooks/useAxes.tsx +60 -228
- package/src/app/charts/hooks/useCanvasSurface.tsx +35 -0
- package/src/app/charts/hooks/useChart.tsx +47 -106
- package/src/app/charts/hooks/useDataSource.tsx +106 -0
- package/src/app/charts/hooks/useHoveredSeries.tsx +33 -0
- package/src/app/charts/hooks/useMouse.tsx +58 -82
- package/src/app/charts/hooks/usePlotDimensions.tsx +25 -89
- package/src/app/charts/hooks/useTooltip.tsx +32 -63
- package/src/app/charts/index.ts +213 -0
- package/src/app/charts/legends/Legend.tsx +198 -479
- package/src/app/charts/legends/constants.ts +37 -0
- package/src/app/charts/observables/iterates.ts +32 -12
- package/src/app/charts/observables/ordinals.ts +141 -67
- package/src/app/charts/observables/outliers.ts +20 -0
- package/src/app/charts/plots/BarPlot.tsx +784 -666
- package/src/app/charts/plots/OutlierPlot.tsx +685 -0
- package/src/app/charts/plots/PoincarePlot.tsx +707 -489
- package/src/app/charts/plots/RasterPlot.tsx +253 -445
- package/src/app/charts/plots/ScatterPlot.tsx +480 -463
- package/src/app/charts/plots/autoScaleYAxes.ts +102 -0
- package/src/app/charts/plots/colorizedLine.ts +185 -0
- package/src/app/charts/plots/constants.ts +16 -0
- package/src/app/charts/plots/hitTesting.ts +198 -0
- package/src/app/charts/plots/plot.ts +138 -44
- package/src/app/charts/plots/useCanvasZoomPan.ts +240 -0
- package/src/app/charts/plots/useStreamingTimeAxes.ts +384 -0
- package/src/app/charts/series/baseSeries.ts +81 -14
- package/src/app/charts/series/iterateSeries.ts +8 -8
- package/src/app/charts/series/ordinalSeries.ts +35 -20
- package/src/app/charts/series/outlierSeries.ts +188 -0
- package/src/app/charts/series/timeSeries.ts +14 -12
- package/src/app/charts/series/timeSeriesChartData.ts +31 -17
- package/src/app/charts/styling/barPlotStyle.ts +48 -5
- package/src/app/charts/styling/canvasStyle.ts +86 -0
- package/src/app/charts/styling/margins.ts +28 -4
- package/src/app/charts/styling/svgStyle.ts +10 -91
- package/src/app/charts/subscriptions/viewDrivers.ts +447 -0
- package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +156 -380
- package/src/app/charts/tooltips/DefaultOutlierTooltipContent.tsx +40 -0
- package/src/app/charts/tooltips/OutlierPlotTooltipContent.tsx +67 -0
- package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +229 -292
- package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +164 -217
- package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +373 -236
- package/src/app/charts/tooltips/Tooltip.tsx +58 -124
- package/src/app/charts/tooltips/TooltipContent.tsx +177 -0
- package/src/app/charts/tooltips/tooltipUtils.ts +359 -61
- package/src/app/charts/tooltips/useOutlierTooltip.tsx +68 -0
- package/src/app/charts/tooltips/useTooltipPlacement.ts +86 -0
- package/src/app/charts/tooltips/useTooltipStyle.ts +15 -0
- package/src/app/charts/trackers/Tracker.tsx +68 -33
- package/src/app/charts/trackers/trackerUtils.ts +263 -376
- package/src/app/charts/utils.ts +90 -48
- package/src/index.ts +2 -322
- package/dist/app/charts/axes/AxesState.test.d.ts +0 -1
- package/dist/app/charts/axes/AxesState.test.js +0 -30
- package/dist/app/charts/axes/AxesState.test.js.map +0 -1
- package/dist/app/charts/axes/AxisInterval.test.d.ts +0 -1
- package/dist/app/charts/axes/AxisInterval.test.js +0 -120
- package/dist/app/charts/axes/AxisInterval.test.js.map +0 -1
- package/dist/app/charts/axes/ContinuousAxisRange.test.d.ts +0 -1
- package/dist/app/charts/axes/ContinuousAxisRange.test.js +0 -47
- package/dist/app/charts/axes/ContinuousAxisRange.test.js.map +0 -1
- package/dist/app/charts/axes/OrdinalAxisRange.test.d.ts +0 -1
- package/dist/app/charts/axes/OrdinalAxisRange.test.js +0 -48
- package/dist/app/charts/axes/OrdinalAxisRange.test.js.map +0 -1
- package/dist/app/charts/filters/regexFilter.test.d.ts +0 -1
- package/dist/app/charts/filters/regexFilter.test.js +0 -11
- package/dist/app/charts/filters/regexFilter.test.js.map +0 -1
- package/dist/app/charts/hooks/useDataObservable.d.ts +0 -72
- package/dist/app/charts/hooks/useDataObservable.js +0 -74
- package/dist/app/charts/hooks/useDataObservable.js.map +0 -1
- package/dist/app/charts/hooks/useInitialData.d.ts +0 -36
- package/dist/app/charts/hooks/useInitialData.js +0 -28
- package/dist/app/charts/hooks/useInitialData.js.map +0 -1
- package/dist/app/charts/observables/iterates.test.d.ts +0 -1
- package/dist/app/charts/observables/iterates.test.js +0 -180
- package/dist/app/charts/observables/iterates.test.js.map +0 -1
- package/dist/app/charts/observables/ordinals.test.d.ts +0 -1
- package/dist/app/charts/observables/ordinals.test.js +0 -102
- package/dist/app/charts/observables/ordinals.test.js.map +0 -1
- package/dist/app/charts/series/datumSeries.test.d.ts +0 -1
- package/dist/app/charts/series/datumSeries.test.js +0 -50
- package/dist/app/charts/series/datumSeries.test.js.map +0 -1
- package/dist/app/charts/styling/margins.test.d.ts +0 -1
- package/dist/app/charts/styling/margins.test.js +0 -19
- package/dist/app/charts/styling/margins.test.js.map +0 -1
- package/dist/app/charts/subscriptions/subscription.test.d.ts +0 -1
- package/dist/app/charts/subscriptions/subscription.test.js +0 -395
- package/dist/app/charts/subscriptions/subscription.test.js.map +0 -1
- package/dist/app/charts/subscriptions/subscriptions.d.ts +0 -100
- package/dist/app/charts/subscriptions/subscriptions.js +0 -449
- package/dist/app/charts/subscriptions/subscriptions.js.map +0 -1
- package/src/app/charts/axes/AxesState.test.ts +0 -34
- package/src/app/charts/axes/AxisInterval.test.ts +0 -143
- package/src/app/charts/axes/ContinuousAxisRange.test.ts +0 -55
- package/src/app/charts/axes/OrdinalAxisRange.test.ts +0 -55
- package/src/app/charts/filters/regexFilter.test.ts +0 -13
- package/src/app/charts/hooks/useDataObservable.tsx +0 -170
- package/src/app/charts/hooks/useInitialData.tsx +0 -64
- package/src/app/charts/observables/iterates.test.ts +0 -201
- package/src/app/charts/observables/ordinals.test.ts +0 -135
- package/src/app/charts/series/datumSeries.test.ts +0 -60
- package/src/app/charts/styling/margins.test.ts +0 -22
- package/src/app/charts/subscriptions/subscription.test.ts +0 -499
- package/src/app/charts/subscriptions/subscriptions.ts +0 -635
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { emptySeries } from "../series/baseSeries";
|
|
2
|
+
import { BaseStreamingDataSource } from "./StreamingDataSource";
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the current time for a chunk of iterate chart data: the max over the series of the
|
|
5
|
+
* time of each series' last new point (or 0 when there are no new points). Shared by the data
|
|
6
|
+
* source (for dropping old data) and the Poincaré plot's view driver (for reporting the current
|
|
7
|
+
* time), so both agree on what "now" is.
|
|
8
|
+
* @param data The iterate chart data
|
|
9
|
+
* @return The current time
|
|
10
|
+
*/
|
|
11
|
+
export function iteratesCurrentTime(data) {
|
|
12
|
+
return Array.from(data.newPoints.values()).reduce((maxTime, points) => {
|
|
13
|
+
const seriesMaxTime = points.length > 0 ? points[points.length - 1].time : 0;
|
|
14
|
+
return seriesMaxTime > maxTime ? seriesMaxTime : maxTime;
|
|
15
|
+
}, 0);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A data source for iterate charts (e.g. the Poincaré plot)
|
|
19
|
+
*/
|
|
20
|
+
export class IteratesDataSource extends BaseStreamingDataSource {
|
|
21
|
+
/**
|
|
22
|
+
* Creates a iterates data source (stopped: call {@link start} to start it)
|
|
23
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
24
|
+
*/
|
|
25
|
+
constructor(options) {
|
|
26
|
+
var _a;
|
|
27
|
+
super(options.initialData, options.generator);
|
|
28
|
+
// the number of points dropped from each series so far (see `droppedCountFor`)
|
|
29
|
+
this.droppedCounts = new Map();
|
|
30
|
+
this.dropDataAfter = (_a = options.dropDataAfter) !== null && _a !== void 0 ? _a : Infinity;
|
|
31
|
+
this.onUpdateData = options.onUpdateData;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
35
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
36
|
+
*/
|
|
37
|
+
setDropDataAfter(dropDataAfter) {
|
|
38
|
+
this.dropDataAfter = dropDataAfter;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @return The latest time (the `time` of the last datum) over all the series, or
|
|
42
|
+
* `-Infinity` when there is no data
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* The number of points dropped (as too old) from the front of the specified series so far --
|
|
46
|
+
* so that a point's overall sequence number in its series is this plus its index in the
|
|
47
|
+
* series' data, even as old points are dropped (e.g. for colorizing the lines by point, see
|
|
48
|
+
* the `PoincarePlot`'s `lineColorSteps`)
|
|
49
|
+
* @param seriesName The name of the series
|
|
50
|
+
* @return The number of points dropped from the series (0 for an unknown series)
|
|
51
|
+
*/
|
|
52
|
+
droppedCountFor(seriesName) {
|
|
53
|
+
var _a;
|
|
54
|
+
return (_a = this.droppedCounts.get(seriesName)) !== null && _a !== void 0 ? _a : 0;
|
|
55
|
+
}
|
|
56
|
+
latestTime() {
|
|
57
|
+
return this.seriesList().reduce((tMax, series) => Math.max(tMax, series.last().map(datum => datum.time).getOrElse(tMax)), -Infinity);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds each series' new points to it, and drops the points that are older than
|
|
61
|
+
* `dropDataAfter` relative to the chunk's current time (see `iteratesCurrentTime`),
|
|
62
|
+
* counting them (see {@link droppedCountFor}). New points for a series that isn't in the
|
|
63
|
+
* source are ignored. Calls `onUpdateData` with each
|
|
64
|
+
* series' new points.
|
|
65
|
+
* @param data The chunk of chart data emitted by the generator
|
|
66
|
+
*/
|
|
67
|
+
ingest(data) {
|
|
68
|
+
const currentTime = iteratesCurrentTime(data);
|
|
69
|
+
data.newPoints.forEach((newData, seriesName) => {
|
|
70
|
+
// note: as in the original subscription code, data for a series that isn't already in
|
|
71
|
+
// the source is accepted but not kept
|
|
72
|
+
const series = this.seriesMap.get(seriesName) || emptySeries(seriesName);
|
|
73
|
+
if (this.onUpdateData)
|
|
74
|
+
this.onUpdateData(seriesName, newData);
|
|
75
|
+
series.data.push(...newData);
|
|
76
|
+
// drop data that is older than the max time-window -- guarded on series.data.length
|
|
77
|
+
let dropped = 0;
|
|
78
|
+
while (series.data.length > 0 && currentTime - series.data[0].time > this.dropDataAfter) {
|
|
79
|
+
series.data.shift();
|
|
80
|
+
dropped++;
|
|
81
|
+
}
|
|
82
|
+
if (dropped > 0)
|
|
83
|
+
this.droppedCounts.set(seriesName, this.droppedCountFor(seriesName) + dropped);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=iteratesDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iteratesDataSource.js","sourceRoot":"","sources":["../../../../src/app/charts/datasources/iteratesDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,uBAAuB,EAAqB,MAAM,uBAAuB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC7C,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,OAAO,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAA;IAC5D,CAAC,EACD,CAAC,CACJ,CAAA;AACL,CAAC;AAsBD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,uBAAsE;IAM1G;;;OAGG;IACH,YAAY,OAAkC;;QAC1C,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QARjD,+EAA+E;QAC9D,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;QAQtD,IAAI,CAAC,aAAa,GAAG,MAAA,OAAO,CAAC,aAAa,mCAAI,QAAQ,CAAA;QACtD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAC5C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,aAAqB;QAClC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH;;;;;;;OAOG;IACH,eAAe,CAAC,UAAkB;;QAC9B,OAAO,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,mCAAI,CAAC,CAAA;IAClD,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EACxF,CAAC,QAAQ,CACZ,CAAA;IACL,CAAC;IAED;;;;;;;OAOG;IACO,MAAM,CAAC,IAAsB;QACnC,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;YAC3C,sFAAsF;YACtF,sCAAsC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,WAAW,CAAe,UAAU,CAAC,CAAA;YAEtF,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAE7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;YAE5B,oFAAoF;YACpF,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;gBACnB,OAAO,EAAE,CAAA;YACb,CAAC;YACD,IAAI,OAAO,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,CAAA;QACnG,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { BaseSeries } from "../series/baseSeries";
|
|
2
|
+
import { type OrdinalDatum } from "../series/ordinalSeries";
|
|
3
|
+
import { type OrdinalChartData, type OrdinalStats, type OrdinalValueStats } from "../observables/ordinals";
|
|
4
|
+
import { BaseStreamingDataSource, type DataGenerator } from "./StreamingDataSource";
|
|
5
|
+
export interface WindowedOrdinalStats extends OrdinalStats {
|
|
6
|
+
/**
|
|
7
|
+
* A map associating each series to stats about that series (e.g. map(series_name -> stats))
|
|
8
|
+
*/
|
|
9
|
+
windowedValueStatsForSeries: Map<string, OrdinalValueStats>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Calculates the ordinal stats for each of the ordinal series (generally, initial data) and
|
|
13
|
+
* returns a {@link WindowedOrdinalStats} object
|
|
14
|
+
* @param series The array of ordinal series
|
|
15
|
+
* @return A {@link WindowedOrdinalStats} object with the stats for each of the series
|
|
16
|
+
*/
|
|
17
|
+
export declare function initialOrdinalStats(series: Array<BaseSeries<OrdinalDatum>>): WindowedOrdinalStats;
|
|
18
|
+
export interface OrdinalDataSourceOptions {
|
|
19
|
+
/**
|
|
20
|
+
* The initial series, owned (and mutated in place) by the source from here on
|
|
21
|
+
*/
|
|
22
|
+
initialData: Array<BaseSeries<OrdinalDatum>>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates the observable of chart data each time the source starts
|
|
25
|
+
*/
|
|
26
|
+
generator: DataGenerator<OrdinalChartData, BaseSeries<OrdinalDatum>>;
|
|
27
|
+
/**
|
|
28
|
+
* Data older than this (ms), relative to the chart-wide current time, is dropped (and removed
|
|
29
|
+
* from the windowed stats) as new data arrives. Defaults to `Infinity` (never drop).
|
|
30
|
+
*/
|
|
31
|
+
dropDataAfter?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Called with each series' new data as it arrives
|
|
34
|
+
*/
|
|
35
|
+
onUpdateData?: (seriesName: string, data: Array<OrdinalDatum>) => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A data source for ordinal charts (e.g. the bar plot). Besides the series, it keeps the lifetime
|
|
39
|
+
* stats (from the chart data) and the windowed stats (over the data currently held) for each
|
|
40
|
+
* series, so they keep accumulating while no plot is mounted.
|
|
41
|
+
*/
|
|
42
|
+
export declare class OrdinalDataSource extends BaseStreamingDataSource<OrdinalChartData, OrdinalDatum, BaseSeries<OrdinalDatum>> {
|
|
43
|
+
/**
|
|
44
|
+
* The lifetime and windowed stats, updated in place as data arrives
|
|
45
|
+
*/
|
|
46
|
+
readonly stats: WindowedOrdinalStats;
|
|
47
|
+
private dropDataAfter;
|
|
48
|
+
private readonly onUpdateData;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a ordinal data source (stopped: call {@link start} to start it)
|
|
51
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
52
|
+
*/
|
|
53
|
+
constructor(options: OrdinalDataSourceOptions);
|
|
54
|
+
/**
|
|
55
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
56
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
57
|
+
*/
|
|
58
|
+
setDropDataAfter(dropDataAfter: number): void;
|
|
59
|
+
/**
|
|
60
|
+
* @return The latest time (the `time` of the last datum) over all the series, or
|
|
61
|
+
* `-Infinity` when there is no data
|
|
62
|
+
*/
|
|
63
|
+
latestTime(): number;
|
|
64
|
+
/**
|
|
65
|
+
* Adds each series' new points to it, copies the chunk's lifetime stats, updates the series'
|
|
66
|
+
* windowed stats for the new points, and then drops the points that are older than
|
|
67
|
+
* `dropDataAfter` relative to the chart-wide current time (the time of the latest datum over
|
|
68
|
+
* all series), removing them from the windowed stats too. New points for a series that isn't
|
|
69
|
+
* in the source are ignored (bar charts have a fixed set of categories). Calls `onUpdateData`
|
|
70
|
+
* with each series' new points.
|
|
71
|
+
* @param data The chunk of chart data emitted by the generator
|
|
72
|
+
*/
|
|
73
|
+
protected ingest(data: OrdinalChartData): void;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ordinalDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinalDataSource.d.ts","sourceRoot":"","sources":["../../../../src/app/charts/datasources/ordinalDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAwB,KAAK,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAOH,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,uBAAuB,EAAE,KAAK,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAElF,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACtD;;OAEG;IACH,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAC9D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,oBAAoB,CAMjG;AA8CD,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IAC5C;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IACpE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,CAAA;CACzE;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,uBAAuB,CAAC,gBAAgB,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACpH;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;IAEpC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuE;IAEpG;;;OAGG;gBACS,OAAO,EAAE,wBAAwB;IAO7C;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACH,UAAU,IAAI,MAAM;IAOpB;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAkDjD"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { emptySeries } from "../series/baseSeries";
|
|
2
|
+
import { calculateOrdinalStats } from "../series/ordinalSeries";
|
|
3
|
+
import { copyOrdinalDatumExtremum, copyOrdinalValueStats, copyValueStatsForSeries, defaultOrdinalValueStats, initialMaxValueDatum, initialMinValueDatum } from "../observables/ordinals";
|
|
4
|
+
import { BaseStreamingDataSource } from "./StreamingDataSource";
|
|
5
|
+
/**
|
|
6
|
+
* Calculates the ordinal stats for each of the ordinal series (generally, initial data) and
|
|
7
|
+
* returns a {@link WindowedOrdinalStats} object
|
|
8
|
+
* @param series The array of ordinal series
|
|
9
|
+
* @return A {@link WindowedOrdinalStats} object with the stats for each of the series
|
|
10
|
+
*/
|
|
11
|
+
export function initialOrdinalStats(series) {
|
|
12
|
+
const ordinalStats = calculateOrdinalStats(series);
|
|
13
|
+
return {
|
|
14
|
+
...ordinalStats,
|
|
15
|
+
windowedValueStatsForSeries: copyValueStatsForSeries(ordinalStats.valueStatsForSeries)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* First of two functions to calculate the current ordinal stats for the current time window. This
|
|
20
|
+
* function updates the windowed stats for the new data.
|
|
21
|
+
* @param newData The new data for that series
|
|
22
|
+
* @param windowedStats The current windowed ordinal value stats
|
|
23
|
+
* @return The windowed ordinal value stats updated for the new data
|
|
24
|
+
*/
|
|
25
|
+
function updatedWindowedValueStatsForNewData(newData, windowedStats) {
|
|
26
|
+
const updatedStats = copyOrdinalValueStats(windowedStats);
|
|
27
|
+
updatedStats.count += newData.length;
|
|
28
|
+
const newSum = newData.reduce((total, datum) => total + datum.value, 0);
|
|
29
|
+
updatedStats.sum += newSum;
|
|
30
|
+
updatedStats.sumSquared += newSum * newSum;
|
|
31
|
+
updatedStats.mean = (updatedStats.count > 0) ? updatedStats.sum / updatedStats.count : NaN;
|
|
32
|
+
updatedStats.min = newData.reduce((min, datum) => datum.value < min.value ? datum : min, updatedStats.min);
|
|
33
|
+
updatedStats.max = newData.reduce((max, datum) => datum.value > max.value ? datum : max, updatedStats.max);
|
|
34
|
+
return updatedStats;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Second of two functions to calculate the current ordinal stats for the current time window. This
|
|
38
|
+
* function updates the windowed stats for the dropped data (the min and max are recalculated from
|
|
39
|
+
* the data that's left)
|
|
40
|
+
* @param droppedData An array of datum that was dropped from the time window
|
|
41
|
+
* @param windowedStats The current windowed ordinal value stats
|
|
42
|
+
* @param series An array of series holding all the current data in the time-window
|
|
43
|
+
* @return The windowed ordinal value stats updated for the dropped data
|
|
44
|
+
*/
|
|
45
|
+
function updateWindowedValueStatsForDroppedData(droppedData, windowedStats, series) {
|
|
46
|
+
const updatedStats = copyOrdinalValueStats(windowedStats);
|
|
47
|
+
updatedStats.count -= droppedData.length;
|
|
48
|
+
const droppedSum = droppedData.reduce((total, datum) => total + datum.value, 0);
|
|
49
|
+
updatedStats.sum -= droppedSum;
|
|
50
|
+
updatedStats.sumSquared -= droppedSum * droppedSum;
|
|
51
|
+
updatedStats.mean = (updatedStats.count > 0) ? updatedStats.sum / updatedStats.count : NaN;
|
|
52
|
+
updatedStats.min = series.data.reduce((min, datum) => datum.value < min.value ? datum : min, initialMinValueDatum());
|
|
53
|
+
updatedStats.max = series.data.reduce((max, datum) => datum.value > max.value ? datum : max, initialMaxValueDatum());
|
|
54
|
+
return updatedStats;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A data source for ordinal charts (e.g. the bar plot). Besides the series, it keeps the lifetime
|
|
58
|
+
* stats (from the chart data) and the windowed stats (over the data currently held) for each
|
|
59
|
+
* series, so they keep accumulating while no plot is mounted.
|
|
60
|
+
*/
|
|
61
|
+
export class OrdinalDataSource extends BaseStreamingDataSource {
|
|
62
|
+
/**
|
|
63
|
+
* Creates a ordinal data source (stopped: call {@link start} to start it)
|
|
64
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
65
|
+
*/
|
|
66
|
+
constructor(options) {
|
|
67
|
+
var _a;
|
|
68
|
+
super(options.initialData, options.generator);
|
|
69
|
+
this.stats = initialOrdinalStats(options.initialData);
|
|
70
|
+
this.dropDataAfter = (_a = options.dropDataAfter) !== null && _a !== void 0 ? _a : Infinity;
|
|
71
|
+
this.onUpdateData = options.onUpdateData;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
75
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
76
|
+
*/
|
|
77
|
+
setDropDataAfter(dropDataAfter) {
|
|
78
|
+
this.dropDataAfter = dropDataAfter;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @return The latest time (the `time` of the last datum) over all the series, or
|
|
82
|
+
* `-Infinity` when there is no data
|
|
83
|
+
*/
|
|
84
|
+
latestTime() {
|
|
85
|
+
return this.seriesList().reduce((tMax, series) => Math.max(tMax, series.last().map(datum => datum.time).getOrElse(tMax)), -Infinity);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Adds each series' new points to it, copies the chunk's lifetime stats, updates the series'
|
|
89
|
+
* windowed stats for the new points, and then drops the points that are older than
|
|
90
|
+
* `dropDataAfter` relative to the chart-wide current time (the time of the latest datum over
|
|
91
|
+
* all series), removing them from the windowed stats too. New points for a series that isn't
|
|
92
|
+
* in the source are ignored (bar charts have a fixed set of categories). Calls `onUpdateData`
|
|
93
|
+
* with each series' new points.
|
|
94
|
+
* @param data The chunk of chart data emitted by the generator
|
|
95
|
+
*/
|
|
96
|
+
ingest(data) {
|
|
97
|
+
// the chart-wide current time (the time of the latest datum over all series). When it
|
|
98
|
+
// isn't a number, the drop comparison below is simply false, so nothing is dropped.
|
|
99
|
+
const currentTime = data.stats.maxDatum.time.time;
|
|
100
|
+
data.newPoints.forEach((newData, name) => {
|
|
101
|
+
// note: as in the original subscription code, data for a series that isn't already in
|
|
102
|
+
// the source is accepted but not kept (bar charts have a fixed set of categories)
|
|
103
|
+
const series = this.seriesMap.get(name) || emptySeries(name);
|
|
104
|
+
if (this.onUpdateData)
|
|
105
|
+
this.onUpdateData(name, newData);
|
|
106
|
+
series.data.push(...newData);
|
|
107
|
+
// grab the (lifetime) stats
|
|
108
|
+
this.stats.minDatum = copyOrdinalDatumExtremum(data.stats.minDatum);
|
|
109
|
+
this.stats.maxDatum = copyOrdinalDatumExtremum(data.stats.maxDatum);
|
|
110
|
+
this.stats.valueStatsForSeries = copyValueStatsForSeries(data.stats.valueStatsForSeries);
|
|
111
|
+
// set up for the windowed-stats
|
|
112
|
+
const lifetimeValueStats = data.stats.valueStatsForSeries.get(name) || defaultOrdinalValueStats();
|
|
113
|
+
if (!this.stats.windowedValueStatsForSeries.has(name)) {
|
|
114
|
+
this.stats.windowedValueStatsForSeries.set(name, copyOrdinalValueStats(lifetimeValueStats));
|
|
115
|
+
}
|
|
116
|
+
// update the windowed-stats for the new points (the dropped points are dealt with below)
|
|
117
|
+
const windowedValueStats = updatedWindowedValueStatsForNewData(newData, this.stats.windowedValueStatsForSeries.get(name));
|
|
118
|
+
this.stats.windowedValueStatsForSeries.set(name, windowedValueStats);
|
|
119
|
+
// drop data older than the max time-window, holding on to the dropped ones -- guarded
|
|
120
|
+
// on series.data.length, since the current time is the max across ALL series, so a
|
|
121
|
+
// single lagging series could otherwise be shifted down to empty
|
|
122
|
+
const droppedData = [];
|
|
123
|
+
while (series.data.length > 0 && currentTime - series.data[0].time > this.dropDataAfter) {
|
|
124
|
+
const dropped = series.data.shift();
|
|
125
|
+
if (dropped !== undefined)
|
|
126
|
+
droppedData.push(dropped);
|
|
127
|
+
}
|
|
128
|
+
// remove the dropped data from the windowed stats
|
|
129
|
+
if (droppedData.length > 0) {
|
|
130
|
+
this.stats.windowedValueStatsForSeries.set(name, updateWindowedValueStatsForDroppedData(droppedData, windowedValueStats, series));
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ordinalDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinalDataSource.js","sourceRoot":"","sources":["../../../../src/app/charts/datasources/ordinalDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { OutlierChartData } from "../observables/outliers";
|
|
2
|
+
import type { OutlierDatum, OutlierSeries } from "../series/outlierSeries";
|
|
3
|
+
import { BaseStreamingDataSource, type DataGenerator } from "./StreamingDataSource";
|
|
4
|
+
export interface OutlierDataSourceOptions<M extends readonly number[]> {
|
|
5
|
+
/**
|
|
6
|
+
* The initial series, owned (and mutated in place) by the source from here on
|
|
7
|
+
*/
|
|
8
|
+
initialData: Array<OutlierSeries<M>>;
|
|
9
|
+
/**
|
|
10
|
+
* Creates the observable of chart data each time the source starts
|
|
11
|
+
*/
|
|
12
|
+
generator: DataGenerator<OutlierChartData<M>, OutlierSeries<M>>;
|
|
13
|
+
/**
|
|
14
|
+
* Data older than this (ms), relative to the newest datum in the same chunk of new data, is
|
|
15
|
+
* dropped as new data arrives. Defaults to `Infinity` (never drop).
|
|
16
|
+
*/
|
|
17
|
+
dropDataAfter?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Called with each series' new data as it arrives
|
|
20
|
+
*/
|
|
21
|
+
onUpdateData?: (seriesName: string, data: Array<OutlierDatum<M>>) => void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A data source for outlier charts. Unlike time-series charts, series that aren't in the initial
|
|
25
|
+
* data are added as they first appear in the stream.
|
|
26
|
+
*/
|
|
27
|
+
export declare class OutlierDataSource<M extends readonly number[]> extends BaseStreamingDataSource<OutlierChartData<M>, OutlierDatum<M>, OutlierSeries<M>> {
|
|
28
|
+
private dropDataAfter;
|
|
29
|
+
private readonly onUpdateData;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a outlier data source (stopped: call {@link start} to start it)
|
|
32
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
33
|
+
*/
|
|
34
|
+
constructor(options: OutlierDataSourceOptions<M>);
|
|
35
|
+
/**
|
|
36
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
37
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
38
|
+
*/
|
|
39
|
+
setDropDataAfter(dropDataAfter: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* @return The latest time (the `datum.x` of the last datum) over all the series, or
|
|
42
|
+
* `-Infinity` when there is no data
|
|
43
|
+
*/
|
|
44
|
+
latestTime(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Adds each series' new points to it (adding the series itself the first time it appears),
|
|
47
|
+
* and drops the points that are older than `dropDataAfter` relative to the newest of the
|
|
48
|
+
* series' new points. Calls `onUpdateData` with each series' new points.
|
|
49
|
+
* @param data The chunk of chart data emitted by the generator
|
|
50
|
+
*/
|
|
51
|
+
protected ingest(data: OutlierChartData<M>): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=outlierDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlierDataSource.d.ts","sourceRoot":"","sources":["../../../../src/app/charts/datasources/outlierDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAC,uBAAuB,EAAE,KAAK,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAElF,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE;IACjE;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;CAC5E;AAED;;;GAGG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,CACtD,SAAQ,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAEvF,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0E;IAEvG;;;OAGG;gBACS,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAMhD;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACH,UAAU,IAAI,MAAM;IAOpB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;CAmBpD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { emptySeries } from "../series/baseSeries";
|
|
2
|
+
import { BaseStreamingDataSource } from "./StreamingDataSource";
|
|
3
|
+
/**
|
|
4
|
+
* A data source for outlier charts. Unlike time-series charts, series that aren't in the initial
|
|
5
|
+
* data are added as they first appear in the stream.
|
|
6
|
+
*/
|
|
7
|
+
export class OutlierDataSource extends BaseStreamingDataSource {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a outlier data source (stopped: call {@link start} to start it)
|
|
10
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
11
|
+
*/
|
|
12
|
+
constructor(options) {
|
|
13
|
+
var _a;
|
|
14
|
+
super(options.initialData, options.generator);
|
|
15
|
+
this.dropDataAfter = (_a = options.dropDataAfter) !== null && _a !== void 0 ? _a : Infinity;
|
|
16
|
+
this.onUpdateData = options.onUpdateData;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
20
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
21
|
+
*/
|
|
22
|
+
setDropDataAfter(dropDataAfter) {
|
|
23
|
+
this.dropDataAfter = dropDataAfter;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @return The latest time (the `datum.x` of the last datum) over all the series, or
|
|
27
|
+
* `-Infinity` when there is no data
|
|
28
|
+
*/
|
|
29
|
+
latestTime() {
|
|
30
|
+
return this.seriesList().reduce((tMax, series) => Math.max(tMax, series.last().map(datum => datum.datum.x).getOrElse(tMax)), -Infinity);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Adds each series' new points to it (adding the series itself the first time it appears),
|
|
34
|
+
* and drops the points that are older than `dropDataAfter` relative to the newest of the
|
|
35
|
+
* series' new points. Calls `onUpdateData` with each series' new points.
|
|
36
|
+
* @param data The chunk of chart data emitted by the generator
|
|
37
|
+
*/
|
|
38
|
+
ingest(data) {
|
|
39
|
+
data.newPoints.forEach((newData, name) => {
|
|
40
|
+
// register a series the first time it shows up in the stream
|
|
41
|
+
const series = this.seriesMap.get(name) || emptySeries(name);
|
|
42
|
+
if (!this.seriesMap.has(name))
|
|
43
|
+
this.seriesMap.set(name, series);
|
|
44
|
+
if (this.onUpdateData)
|
|
45
|
+
this.onUpdateData(name, newData);
|
|
46
|
+
series.data.push(...newData);
|
|
47
|
+
// drop data older than the max time-window, relative to this chunk's newest datum
|
|
48
|
+
const currentTime = Math.max(...newData.map(datum => datum.datum.x), -Infinity);
|
|
49
|
+
if (Number.isFinite(currentTime)) {
|
|
50
|
+
while (series.data.length > 0 && currentTime - series.data[0].datum.x > this.dropDataAfter) {
|
|
51
|
+
series.data.shift();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=outlierDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlierDataSource.js","sourceRoot":"","sources":["../../../../src/app/charts/datasources/outlierDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,uBAAuB,EAAqB,MAAM,uBAAuB,CAAC;AAsBlF;;;GAGG;AACH,MAAM,OAAO,iBACT,SAAQ,uBAA+E;IAKvF;;;OAGG;IACH,YAAY,OAAoC;;QAC5C,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,aAAa,GAAG,MAAA,OAAO,CAAC,aAAa,mCAAI,QAAQ,CAAA;QACtD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAC5C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,aAAqB;QAClC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAC3F,CAAC,QAAQ,CACZ,CAAA;IACL,CAAC;IAED;;;;;OAKG;IACO,MAAM,CAAC,IAAyB;QACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACrC,6DAA6D;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAkB,IAAI,CAAqB,CAAA;YACjG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAE/D,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAEvD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;YAE5B,kFAAkF;YAClF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YAC/E,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACzF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;gBACvB,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Datum, TimeSeries } from "../series/timeSeries";
|
|
2
|
+
import type { TimeSeriesChartData } from "../series/timeSeriesChartData";
|
|
3
|
+
import { BaseStreamingDataSource, type DataGenerator } from "./StreamingDataSource";
|
|
4
|
+
/**
|
|
5
|
+
* Maps a series name to the "time group" whose clock governs it. Series in the same group share
|
|
6
|
+
* one current time (the max time over all of them), which is what `dropDataAfter` is measured
|
|
7
|
+
* against. Plots group series by their x-axis, so this is typically
|
|
8
|
+
* `name => axisAssignments.get(name)?.xAxis ?? defaultXAxisId`.
|
|
9
|
+
*/
|
|
10
|
+
export type TimeGroupFor = (seriesName: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Calculates the current time for each time group present in the chart data: the max over the
|
|
13
|
+
* group's series of each series' own max time (falling back to the chart-wide max time). Shared
|
|
14
|
+
* by the data source (for dropping old data) and the plots' view drivers (for advancing each
|
|
15
|
+
* x-axis), so both agree on what "now" is for each axis.
|
|
16
|
+
* @param data The chart data
|
|
17
|
+
* @param timeGroupFor Maps each series to its time group
|
|
18
|
+
* @return A map(group -> current_time)
|
|
19
|
+
*/
|
|
20
|
+
export declare function currentTimesByGroup(data: TimeSeriesChartData, timeGroupFor: TimeGroupFor): Map<string, number>;
|
|
21
|
+
export interface TimeSeriesDataSourceOptions {
|
|
22
|
+
/**
|
|
23
|
+
* The initial series, owned (and mutated in place) by the source from here on
|
|
24
|
+
*/
|
|
25
|
+
initialData: Array<TimeSeries>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates the observable of chart data each time the source starts
|
|
28
|
+
*/
|
|
29
|
+
generator: DataGenerator<TimeSeriesChartData, TimeSeries>;
|
|
30
|
+
/**
|
|
31
|
+
* Data older than this (ms), relative to its time group's current time, is dropped as new
|
|
32
|
+
* data arrives. Defaults to `Infinity` (never drop).
|
|
33
|
+
*/
|
|
34
|
+
dropDataAfter?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Assigns each series to a time group (see {@link TimeGroupFor}). Defaults to one group for
|
|
37
|
+
* all series.
|
|
38
|
+
*/
|
|
39
|
+
timeGroupFor?: TimeGroupFor;
|
|
40
|
+
/**
|
|
41
|
+
* Called with each series' new data as it arrives
|
|
42
|
+
*/
|
|
43
|
+
onUpdateData?: (seriesName: string, data: Array<Datum>) => void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A data source for time-series charts (e.g. the scatter and raster plots)
|
|
47
|
+
*/
|
|
48
|
+
export declare class TimeSeriesDataSource extends BaseStreamingDataSource<TimeSeriesChartData, Datum, TimeSeries> {
|
|
49
|
+
private dropDataAfter;
|
|
50
|
+
private readonly timeGroupFor;
|
|
51
|
+
private readonly onUpdateData;
|
|
52
|
+
/**
|
|
53
|
+
* Creates a time-series data source (stopped: call {@link start} to start it)
|
|
54
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
55
|
+
*/
|
|
56
|
+
constructor(options: TimeSeriesDataSourceOptions);
|
|
57
|
+
/**
|
|
58
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
59
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
60
|
+
*/
|
|
61
|
+
setDropDataAfter(dropDataAfter: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* @return The latest time (the `x` of the last datum) over all the series, or
|
|
64
|
+
* `-Infinity` when there is no data
|
|
65
|
+
*/
|
|
66
|
+
latestTime(): number;
|
|
67
|
+
/**
|
|
68
|
+
* Adds each series' new points to it, and drops the points that are older than
|
|
69
|
+
* `dropDataAfter` relative to the current time of the series' time group (see
|
|
70
|
+
* `currentTimesByGroup`). New points for a series that isn't in the source are ignored
|
|
71
|
+
* (time-series charts have a fixed set of series). Calls `onUpdateData` with each series' new
|
|
72
|
+
* points.
|
|
73
|
+
* @param data The chunk of chart data emitted by the generator
|
|
74
|
+
*/
|
|
75
|
+
protected ingest(data: TimeSeriesChartData): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=timeSeriesDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeriesDataSource.d.ts","sourceRoot":"","sources":["../../../../src/app/charts/datasources/timeSeriesDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAC,uBAAuB,EAAE,KAAK,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAElF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;AAOzD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ9G;AAED,MAAM,WAAW,2BAA2B;IACxC;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC9B;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;IACzD;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA;CAClE;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,uBAAuB,CAAC,mBAAmB,EAAE,KAAK,EAAE,UAAU,CAAC;IACrG,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgE;IAE7F;;;OAGG;gBACS,OAAO,EAAE,2BAA2B;IAOhD;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACH,UAAU,IAAI,MAAM;IAOpB;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;CAwBpD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { emptySeries } from "../series/baseSeries";
|
|
2
|
+
import { BaseStreamingDataSource } from "./StreamingDataSource";
|
|
3
|
+
/**
|
|
4
|
+
* The default time grouping: one group, holding all the series
|
|
5
|
+
*/
|
|
6
|
+
const SINGLE_TIME_GROUP = () => "";
|
|
7
|
+
/**
|
|
8
|
+
* Calculates the current time for each time group present in the chart data: the max over the
|
|
9
|
+
* group's series of each series' own max time (falling back to the chart-wide max time). Shared
|
|
10
|
+
* by the data source (for dropping old data) and the plots' view drivers (for advancing each
|
|
11
|
+
* x-axis), so both agree on what "now" is for each axis.
|
|
12
|
+
* @param data The chart data
|
|
13
|
+
* @param timeGroupFor Maps each series to its time group
|
|
14
|
+
* @return A map(group -> current_time)
|
|
15
|
+
*/
|
|
16
|
+
export function currentTimesByGroup(data, timeGroupFor) {
|
|
17
|
+
const times = new Map();
|
|
18
|
+
data.seriesNames.forEach(name => {
|
|
19
|
+
var _a;
|
|
20
|
+
const group = timeGroupFor(name);
|
|
21
|
+
const seriesTime = data.maxTimes.get(name) || data.maxTime;
|
|
22
|
+
times.set(group, Math.max((_a = times.get(group)) !== null && _a !== void 0 ? _a : -Infinity, seriesTime));
|
|
23
|
+
});
|
|
24
|
+
return times;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A data source for time-series charts (e.g. the scatter and raster plots)
|
|
28
|
+
*/
|
|
29
|
+
export class TimeSeriesDataSource extends BaseStreamingDataSource {
|
|
30
|
+
/**
|
|
31
|
+
* Creates a time-series data source (stopped: call {@link start} to start it)
|
|
32
|
+
* @param options The initial data, the generator, and the data-retention settings
|
|
33
|
+
*/
|
|
34
|
+
constructor(options) {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
super(options.initialData, options.generator);
|
|
37
|
+
this.dropDataAfter = (_a = options.dropDataAfter) !== null && _a !== void 0 ? _a : Infinity;
|
|
38
|
+
this.timeGroupFor = (_b = options.timeGroupFor) !== null && _b !== void 0 ? _b : SINGLE_TIME_GROUP;
|
|
39
|
+
this.onUpdateData = options.onUpdateData;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Changes how long data is kept; takes effect as the next data arrives
|
|
43
|
+
* @param dropDataAfter Data older than this (ms) is dropped
|
|
44
|
+
*/
|
|
45
|
+
setDropDataAfter(dropDataAfter) {
|
|
46
|
+
this.dropDataAfter = dropDataAfter;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @return The latest time (the `x` of the last datum) over all the series, or
|
|
50
|
+
* `-Infinity` when there is no data
|
|
51
|
+
*/
|
|
52
|
+
latestTime() {
|
|
53
|
+
return this.seriesList().reduce((tMax, series) => Math.max(tMax, series.last().map(datum => datum.x).getOrElse(tMax)), -Infinity);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Adds each series' new points to it, and drops the points that are older than
|
|
57
|
+
* `dropDataAfter` relative to the current time of the series' time group (see
|
|
58
|
+
* `currentTimesByGroup`). New points for a series that isn't in the source are ignored
|
|
59
|
+
* (time-series charts have a fixed set of series). Calls `onUpdateData` with each series' new
|
|
60
|
+
* points.
|
|
61
|
+
* @param data The chunk of chart data emitted by the generator
|
|
62
|
+
*/
|
|
63
|
+
ingest(data) {
|
|
64
|
+
const groupTimes = currentTimesByGroup(data, this.timeGroupFor);
|
|
65
|
+
// add each new point to its corresponding series, the new points is a
|
|
66
|
+
// map(series_name -> new_point[])
|
|
67
|
+
data.newPoints.forEach((newData, name) => {
|
|
68
|
+
// note: as in the original subscription code, data for a series that isn't already in
|
|
69
|
+
// the source is accepted but not kept (time-series charts have a fixed set of series)
|
|
70
|
+
const series = this.seriesMap.get(name) || emptySeries(name);
|
|
71
|
+
if (this.onUpdateData)
|
|
72
|
+
this.onUpdateData(name, newData);
|
|
73
|
+
series.data.push(...newData);
|
|
74
|
+
// drop data that is older than the max time-window -- guarded on series.data.length so
|
|
75
|
+
// a sibling series in the same time group advancing the group's time past every point
|
|
76
|
+
// this series holds (e.g. this series stalls/updates slower) can't shift it down to
|
|
77
|
+
// empty and then throw on series.data[0].x
|
|
78
|
+
const currentTime = groupTimes.get(this.timeGroupFor(name)) || data.maxTime;
|
|
79
|
+
while (series.data.length > 0 && currentTime - series.data[0].x > this.dropDataAfter) {
|
|
80
|
+
series.data.shift();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=timeSeriesDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeriesDataSource.js","sourceRoot":"","sources":["../../../../src/app/charts/datasources/timeSeriesDataSource.ts"],"names":[],"mappings":"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"}
|