stream-charts 1.2.0 → 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.
Files changed (463) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +809 -1022
  3. package/changes.md +40 -0
  4. package/dist/app/charts/Chart.d.ts +35 -139
  5. package/dist/app/charts/Chart.d.ts.map +1 -0
  6. package/dist/app/charts/Chart.js +74 -65
  7. package/dist/app/charts/Chart.js.map +1 -1
  8. package/dist/app/charts/axes/AxesState.d.ts +26 -18
  9. package/dist/app/charts/axes/AxesState.d.ts.map +1 -0
  10. package/dist/app/charts/axes/AxesState.js +26 -24
  11. package/dist/app/charts/axes/AxesState.js.map +1 -1
  12. package/dist/app/charts/axes/AxisInterval.d.ts +44 -26
  13. package/dist/app/charts/axes/AxisInterval.d.ts.map +1 -0
  14. package/dist/app/charts/axes/AxisInterval.js +48 -29
  15. package/dist/app/charts/axes/AxisInterval.js.map +1 -1
  16. package/dist/app/charts/axes/BaseAxisRange.d.ts +46 -22
  17. package/dist/app/charts/axes/BaseAxisRange.d.ts.map +1 -0
  18. package/dist/app/charts/axes/BaseAxisRange.js +17 -12
  19. package/dist/app/charts/axes/BaseAxisRange.js.map +1 -1
  20. package/dist/app/charts/axes/ContinuousAxis.d.ts +47 -6
  21. package/dist/app/charts/axes/ContinuousAxis.d.ts.map +1 -0
  22. package/dist/app/charts/axes/ContinuousAxis.js +160 -27
  23. package/dist/app/charts/axes/ContinuousAxis.js.map +1 -1
  24. package/dist/app/charts/axes/ContinuousAxisRange.d.ts +29 -10
  25. package/dist/app/charts/axes/ContinuousAxisRange.d.ts.map +1 -0
  26. package/dist/app/charts/axes/ContinuousAxisRange.js +29 -11
  27. package/dist/app/charts/axes/ContinuousAxisRange.js.map +1 -1
  28. package/dist/app/charts/axes/EmptyAxis.d.ts +5 -2
  29. package/dist/app/charts/axes/EmptyAxis.d.ts.map +1 -0
  30. package/dist/app/charts/axes/EmptyAxis.js +30 -9
  31. package/dist/app/charts/axes/EmptyAxis.js.map +1 -1
  32. package/dist/app/charts/axes/OrdinalAxis.d.ts +5 -3
  33. package/dist/app/charts/axes/OrdinalAxis.d.ts.map +1 -0
  34. package/dist/app/charts/axes/OrdinalAxis.js +39 -16
  35. package/dist/app/charts/axes/OrdinalAxis.js.map +1 -1
  36. package/dist/app/charts/axes/OrdinalAxisRange.d.ts +76 -13
  37. package/dist/app/charts/axes/OrdinalAxisRange.d.ts.map +1 -0
  38. package/dist/app/charts/axes/OrdinalAxisRange.js +95 -16
  39. package/dist/app/charts/axes/OrdinalAxisRange.js.map +1 -1
  40. package/dist/app/charts/axes/autoScale.d.ts +111 -0
  41. package/dist/app/charts/axes/autoScale.d.ts.map +1 -0
  42. package/dist/app/charts/axes/autoScale.js +188 -0
  43. package/dist/app/charts/axes/autoScale.js.map +1 -0
  44. package/dist/app/charts/axes/axes.d.ts +273 -150
  45. package/dist/app/charts/axes/axes.d.ts.map +1 -0
  46. package/dist/app/charts/axes/axes.js +808 -583
  47. package/dist/app/charts/axes/axes.js.map +1 -1
  48. package/dist/app/charts/d3types.d.ts +40 -11
  49. package/dist/app/charts/d3types.d.ts.map +1 -0
  50. package/dist/app/charts/d3types.js +3 -0
  51. package/dist/app/charts/d3types.js.map +1 -1
  52. package/dist/app/charts/datasources/StreamingDataSource.d.ts +149 -0
  53. package/dist/app/charts/datasources/StreamingDataSource.d.ts.map +1 -0
  54. package/dist/app/charts/datasources/StreamingDataSource.js +110 -0
  55. package/dist/app/charts/datasources/StreamingDataSource.js.map +1 -0
  56. package/dist/app/charts/datasources/iteratesDataSource.d.ts +73 -0
  57. package/dist/app/charts/datasources/iteratesDataSource.d.ts.map +1 -0
  58. package/dist/app/charts/datasources/iteratesDataSource.js +87 -0
  59. package/dist/app/charts/datasources/iteratesDataSource.js.map +1 -0
  60. package/dist/app/charts/datasources/ordinalDataSource.d.ts +75 -0
  61. package/dist/app/charts/datasources/ordinalDataSource.d.ts.map +1 -0
  62. package/dist/app/charts/datasources/ordinalDataSource.js +135 -0
  63. package/dist/app/charts/datasources/ordinalDataSource.js.map +1 -0
  64. package/dist/app/charts/datasources/outlierDataSource.d.ts +53 -0
  65. package/dist/app/charts/datasources/outlierDataSource.d.ts.map +1 -0
  66. package/dist/app/charts/datasources/outlierDataSource.js +57 -0
  67. package/dist/app/charts/datasources/outlierDataSource.js.map +1 -0
  68. package/dist/app/charts/datasources/timeSeriesDataSource.d.ts +77 -0
  69. package/dist/app/charts/datasources/timeSeriesDataSource.d.ts.map +1 -0
  70. package/dist/app/charts/datasources/timeSeriesDataSource.js +85 -0
  71. package/dist/app/charts/datasources/timeSeriesDataSource.js.map +1 -0
  72. package/dist/app/charts/filters/regexFilter.d.ts +31 -4
  73. package/dist/app/charts/filters/regexFilter.d.ts.map +1 -0
  74. package/dist/app/charts/filters/regexFilter.js +38 -4
  75. package/dist/app/charts/filters/regexFilter.js.map +1 -1
  76. package/dist/app/charts/hooks/AxesProvider.d.ts +21 -0
  77. package/dist/app/charts/hooks/AxesProvider.d.ts.map +1 -0
  78. package/dist/app/charts/hooks/AxesProvider.js +213 -0
  79. package/dist/app/charts/hooks/AxesProvider.js.map +1 -0
  80. package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts +25 -0
  81. package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts.map +1 -0
  82. package/dist/app/charts/hooks/CanvasSurfaceProvider.js +76 -0
  83. package/dist/app/charts/hooks/CanvasSurfaceProvider.js.map +1 -0
  84. package/dist/app/charts/hooks/ChartProvider.d.ts +40 -0
  85. package/dist/app/charts/hooks/ChartProvider.d.ts.map +1 -0
  86. package/dist/app/charts/hooks/ChartProvider.js +33 -0
  87. package/dist/app/charts/hooks/ChartProvider.js.map +1 -0
  88. package/dist/app/charts/hooks/InteractionProvider.d.ts +23 -0
  89. package/dist/app/charts/hooks/InteractionProvider.d.ts.map +1 -0
  90. package/dist/app/charts/hooks/InteractionProvider.js +60 -0
  91. package/dist/app/charts/hooks/InteractionProvider.js.map +1 -0
  92. package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts +16 -0
  93. package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts.map +1 -0
  94. package/dist/app/charts/hooks/PlotDimensionsProvider.js +76 -0
  95. package/dist/app/charts/hooks/PlotDimensionsProvider.js.map +1 -0
  96. package/dist/app/charts/hooks/defaultAxesValues.d.ts +11 -0
  97. package/dist/app/charts/hooks/defaultAxesValues.d.ts.map +1 -0
  98. package/dist/app/charts/hooks/defaultAxesValues.js +36 -0
  99. package/dist/app/charts/hooks/defaultAxesValues.js.map +1 -0
  100. package/dist/app/charts/hooks/defaultMouseValues.d.ts +9 -0
  101. package/dist/app/charts/hooks/defaultMouseValues.d.ts.map +1 -0
  102. package/dist/app/charts/hooks/defaultMouseValues.js +23 -0
  103. package/dist/app/charts/hooks/defaultMouseValues.js.map +1 -0
  104. package/dist/app/charts/hooks/defaultPlotDimensions.d.ts +13 -0
  105. package/dist/app/charts/hooks/defaultPlotDimensions.d.ts.map +1 -0
  106. package/dist/app/charts/hooks/defaultPlotDimensions.js +23 -0
  107. package/dist/app/charts/hooks/defaultPlotDimensions.js.map +1 -0
  108. package/dist/app/charts/hooks/defaultTooltipValues.d.ts +9 -0
  109. package/dist/app/charts/hooks/defaultTooltipValues.d.ts.map +1 -0
  110. package/dist/app/charts/hooks/defaultTooltipValues.js +21 -0
  111. package/dist/app/charts/hooks/defaultTooltipValues.js.map +1 -0
  112. package/dist/app/charts/hooks/defaultUseChartValues.d.ts +14 -0
  113. package/dist/app/charts/hooks/defaultUseChartValues.d.ts.map +1 -0
  114. package/dist/app/charts/hooks/defaultUseChartValues.js +30 -0
  115. package/dist/app/charts/hooks/defaultUseChartValues.js.map +1 -0
  116. package/dist/app/charts/hooks/useAxes.d.ts +49 -36
  117. package/dist/app/charts/hooks/useAxes.d.ts.map +1 -0
  118. package/dist/app/charts/hooks/useAxes.js +16 -176
  119. package/dist/app/charts/hooks/useAxes.js.map +1 -1
  120. package/dist/app/charts/hooks/useCanvasSurface.d.ts +25 -0
  121. package/dist/app/charts/hooks/useCanvasSurface.d.ts.map +1 -0
  122. package/dist/app/charts/hooks/useCanvasSurface.js +18 -0
  123. package/dist/app/charts/hooks/useCanvasSurface.js.map +1 -0
  124. package/dist/app/charts/hooks/useChart.d.ts +30 -44
  125. package/dist/app/charts/hooks/useChart.d.ts.map +1 -0
  126. package/dist/app/charts/hooks/useChart.js +26 -48
  127. package/dist/app/charts/hooks/useChart.js.map +1 -1
  128. package/dist/app/charts/hooks/useDataSource.d.ts +68 -0
  129. package/dist/app/charts/hooks/useDataSource.d.ts.map +1 -0
  130. package/dist/app/charts/hooks/useDataSource.js +63 -0
  131. package/dist/app/charts/hooks/useDataSource.js.map +1 -0
  132. package/dist/app/charts/hooks/useHoveredSeries.d.ts +25 -0
  133. package/dist/app/charts/hooks/useHoveredSeries.d.ts.map +1 -0
  134. package/dist/app/charts/hooks/useHoveredSeries.js +15 -0
  135. package/dist/app/charts/hooks/useHoveredSeries.js.map +1 -0
  136. package/dist/app/charts/hooks/useMouse.d.ts +46 -22
  137. package/dist/app/charts/hooks/useMouse.d.ts.map +1 -0
  138. package/dist/app/charts/hooks/useMouse.js +12 -56
  139. package/dist/app/charts/hooks/useMouse.js.map +1 -1
  140. package/dist/app/charts/hooks/usePlotDimensions.d.ts +25 -13
  141. package/dist/app/charts/hooks/usePlotDimensions.d.ts.map +1 -0
  142. package/dist/app/charts/hooks/usePlotDimensions.js +6 -62
  143. package/dist/app/charts/hooks/usePlotDimensions.js.map +1 -1
  144. package/dist/app/charts/hooks/useTooltip.d.ts +24 -26
  145. package/dist/app/charts/hooks/useTooltip.d.ts.map +1 -0
  146. package/dist/app/charts/hooks/useTooltip.js +12 -42
  147. package/dist/app/charts/hooks/useTooltip.js.map +1 -1
  148. package/dist/app/charts/index.d.ts +66 -0
  149. package/dist/app/charts/index.d.ts.map +1 -0
  150. package/dist/app/charts/index.js +87 -0
  151. package/dist/app/charts/index.js.map +1 -0
  152. package/dist/app/charts/legends/Legend.d.ts +33 -12
  153. package/dist/app/charts/legends/Legend.d.ts.map +1 -0
  154. package/dist/app/charts/legends/Legend.js +138 -379
  155. package/dist/app/charts/legends/Legend.js.map +1 -1
  156. package/dist/app/charts/legends/constants.d.ts +19 -0
  157. package/dist/app/charts/legends/constants.d.ts.map +1 -0
  158. package/dist/app/charts/legends/constants.js +34 -0
  159. package/dist/app/charts/legends/constants.js.map +1 -0
  160. package/dist/app/charts/observables/ChartData.d.ts +1 -0
  161. package/dist/app/charts/observables/ChartData.d.ts.map +1 -0
  162. package/dist/app/charts/observables/iterates.d.ts +13 -7
  163. package/dist/app/charts/observables/iterates.d.ts.map +1 -0
  164. package/dist/app/charts/observables/iterates.js +42 -9
  165. package/dist/app/charts/observables/iterates.js.map +1 -1
  166. package/dist/app/charts/observables/ordinals.d.ts +70 -12
  167. package/dist/app/charts/observables/ordinals.d.ts.map +1 -0
  168. package/dist/app/charts/observables/ordinals.js +127 -48
  169. package/dist/app/charts/observables/ordinals.js.map +1 -1
  170. package/dist/app/charts/observables/outliers.d.ts +18 -0
  171. package/dist/app/charts/observables/outliers.d.ts.map +1 -0
  172. package/dist/app/charts/observables/outliers.js +2 -0
  173. package/dist/app/charts/observables/outliers.js.map +1 -0
  174. package/dist/app/charts/plots/BarPlot.d.ts +87 -13
  175. package/dist/app/charts/plots/BarPlot.d.ts.map +1 -0
  176. package/dist/app/charts/plots/BarPlot.js +603 -356
  177. package/dist/app/charts/plots/BarPlot.js.map +1 -1
  178. package/dist/app/charts/plots/OutlierPlot.d.ts +123 -0
  179. package/dist/app/charts/plots/OutlierPlot.d.ts.map +1 -0
  180. package/dist/app/charts/plots/OutlierPlot.js +430 -0
  181. package/dist/app/charts/plots/OutlierPlot.js.map +1 -0
  182. package/dist/app/charts/plots/PoincarePlot.d.ts +92 -14
  183. package/dist/app/charts/plots/PoincarePlot.d.ts.map +1 -0
  184. package/dist/app/charts/plots/PoincarePlot.js +523 -364
  185. package/dist/app/charts/plots/PoincarePlot.js.map +1 -1
  186. package/dist/app/charts/plots/RasterPlot.d.ts +31 -10
  187. package/dist/app/charts/plots/RasterPlot.d.ts.map +1 -0
  188. package/dist/app/charts/plots/RasterPlot.js +198 -306
  189. package/dist/app/charts/plots/RasterPlot.js.map +1 -1
  190. package/dist/app/charts/plots/ScatterPlot.d.ts +77 -21
  191. package/dist/app/charts/plots/ScatterPlot.d.ts.map +1 -0
  192. package/dist/app/charts/plots/ScatterPlot.js +359 -302
  193. package/dist/app/charts/plots/ScatterPlot.js.map +1 -1
  194. package/dist/app/charts/plots/autoScaleYAxes.d.ts +43 -0
  195. package/dist/app/charts/plots/autoScaleYAxes.d.ts.map +1 -0
  196. package/dist/app/charts/plots/autoScaleYAxes.js +71 -0
  197. package/dist/app/charts/plots/autoScaleYAxes.js.map +1 -0
  198. package/dist/app/charts/plots/colorizedLine.d.ts +61 -0
  199. package/dist/app/charts/plots/colorizedLine.d.ts.map +1 -0
  200. package/dist/app/charts/plots/colorizedLine.js +157 -0
  201. package/dist/app/charts/plots/colorizedLine.js.map +1 -0
  202. package/dist/app/charts/plots/constants.d.ts +7 -0
  203. package/dist/app/charts/plots/constants.d.ts.map +1 -0
  204. package/dist/app/charts/plots/constants.js +11 -0
  205. package/dist/app/charts/plots/constants.js.map +1 -0
  206. package/dist/app/charts/plots/hitTesting.d.ts +88 -0
  207. package/dist/app/charts/plots/hitTesting.d.ts.map +1 -0
  208. package/dist/app/charts/plots/hitTesting.js +136 -0
  209. package/dist/app/charts/plots/hitTesting.js.map +1 -0
  210. package/dist/app/charts/plots/plot.d.ts +52 -16
  211. package/dist/app/charts/plots/plot.d.ts.map +1 -0
  212. package/dist/app/charts/plots/plot.js +108 -35
  213. package/dist/app/charts/plots/plot.js.map +1 -1
  214. package/dist/app/charts/plots/useCanvasZoomPan.d.ts +119 -0
  215. package/dist/app/charts/plots/useCanvasZoomPan.d.ts.map +1 -0
  216. package/dist/app/charts/plots/useCanvasZoomPan.js +113 -0
  217. package/dist/app/charts/plots/useCanvasZoomPan.js.map +1 -0
  218. package/dist/app/charts/plots/useStreamingTimeAxes.d.ts +103 -0
  219. package/dist/app/charts/plots/useStreamingTimeAxes.d.ts.map +1 -0
  220. package/dist/app/charts/plots/useStreamingTimeAxes.js +257 -0
  221. package/dist/app/charts/plots/useStreamingTimeAxes.js.map +1 -0
  222. package/dist/app/charts/series/baseSeries.d.ts +60 -8
  223. package/dist/app/charts/series/baseSeries.d.ts.map +1 -0
  224. package/dist/app/charts/series/baseSeries.js +53 -8
  225. package/dist/app/charts/series/baseSeries.js.map +1 -1
  226. package/dist/app/charts/series/iterateSeries.d.ts +9 -8
  227. package/dist/app/charts/series/iterateSeries.d.ts.map +1 -0
  228. package/dist/app/charts/series/iterateSeries.js +7 -7
  229. package/dist/app/charts/series/iterateSeries.js.map +1 -1
  230. package/dist/app/charts/series/ordinalSeries.d.ts +27 -13
  231. package/dist/app/charts/series/ordinalSeries.d.ts.map +1 -0
  232. package/dist/app/charts/series/ordinalSeries.js +29 -15
  233. package/dist/app/charts/series/ordinalSeries.js.map +1 -1
  234. package/dist/app/charts/series/outlierSeries.d.ts +142 -0
  235. package/dist/app/charts/series/outlierSeries.d.ts.map +1 -0
  236. package/dist/app/charts/series/outlierSeries.js +82 -0
  237. package/dist/app/charts/series/outlierSeries.js.map +1 -0
  238. package/dist/app/charts/series/timeSeries.d.ts +13 -9
  239. package/dist/app/charts/series/timeSeries.d.ts.map +1 -0
  240. package/dist/app/charts/series/timeSeries.js +6 -3
  241. package/dist/app/charts/series/timeSeries.js.map +1 -1
  242. package/dist/app/charts/series/timeSeriesChartData.d.ts +18 -10
  243. package/dist/app/charts/series/timeSeriesChartData.d.ts.map +1 -0
  244. package/dist/app/charts/series/timeSeriesChartData.js +28 -14
  245. package/dist/app/charts/series/timeSeriesChartData.js.map +1 -1
  246. package/dist/app/charts/styling/barPlotStyle.d.ts +46 -2
  247. package/dist/app/charts/styling/barPlotStyle.d.ts.map +1 -0
  248. package/dist/app/charts/styling/barPlotStyle.js +37 -3
  249. package/dist/app/charts/styling/barPlotStyle.js.map +1 -1
  250. package/dist/app/charts/styling/canvasStyle.d.ts +53 -0
  251. package/dist/app/charts/styling/canvasStyle.d.ts.map +1 -0
  252. package/dist/app/charts/styling/canvasStyle.js +71 -0
  253. package/dist/app/charts/styling/canvasStyle.js.map +1 -0
  254. package/dist/app/charts/styling/margins.d.ts +21 -2
  255. package/dist/app/charts/styling/margins.d.ts.map +1 -0
  256. package/dist/app/charts/styling/margins.js +25 -4
  257. package/dist/app/charts/styling/margins.js.map +1 -1
  258. package/dist/app/charts/styling/svgStyle.d.ts +10 -56
  259. package/dist/app/charts/styling/svgStyle.d.ts.map +1 -0
  260. package/dist/app/charts/styling/svgStyle.js +3 -78
  261. package/dist/app/charts/styling/svgStyle.js.map +1 -1
  262. package/dist/app/charts/subscriptions/viewDrivers.d.ts +124 -0
  263. package/dist/app/charts/subscriptions/viewDrivers.d.ts.map +1 -0
  264. package/dist/app/charts/subscriptions/viewDrivers.js +338 -0
  265. package/dist/app/charts/subscriptions/viewDrivers.js.map +1 -0
  266. package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts +12 -78
  267. package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts.map +1 -0
  268. package/dist/app/charts/tooltips/BarPlotTooltipContent.js +65 -257
  269. package/dist/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -1
  270. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts +9 -0
  271. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts.map +1 -0
  272. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js +16 -0
  273. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js.map +1 -0
  274. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts +30 -0
  275. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts.map +1 -0
  276. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js +26 -0
  277. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js.map +1 -0
  278. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +22 -72
  279. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts.map +1 -0
  280. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js +104 -171
  281. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -1
  282. package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts +32 -8
  283. package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts.map +1 -0
  284. package/dist/app/charts/tooltips/RasterPlotTooltipContent.js +62 -115
  285. package/dist/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -1
  286. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts +39 -12
  287. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts.map +1 -0
  288. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js +162 -134
  289. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -1
  290. package/dist/app/charts/tooltips/Tooltip.d.ts +27 -32
  291. package/dist/app/charts/tooltips/Tooltip.d.ts.map +1 -0
  292. package/dist/app/charts/tooltips/Tooltip.js +37 -81
  293. package/dist/app/charts/tooltips/Tooltip.js.map +1 -1
  294. package/dist/app/charts/tooltips/TooltipContent.d.ts +81 -0
  295. package/dist/app/charts/tooltips/TooltipContent.d.ts.map +1 -0
  296. package/dist/app/charts/tooltips/TooltipContent.js +99 -0
  297. package/dist/app/charts/tooltips/TooltipContent.js.map +1 -0
  298. package/dist/app/charts/tooltips/tooltipUtils.d.ts +186 -36
  299. package/dist/app/charts/tooltips/tooltipUtils.d.ts.map +1 -0
  300. package/dist/app/charts/tooltips/tooltipUtils.js +277 -48
  301. package/dist/app/charts/tooltips/tooltipUtils.js.map +1 -1
  302. package/dist/app/charts/tooltips/useOutlierTooltip.d.ts +59 -0
  303. package/dist/app/charts/tooltips/useOutlierTooltip.d.ts.map +1 -0
  304. package/dist/app/charts/tooltips/useOutlierTooltip.js +16 -0
  305. package/dist/app/charts/tooltips/useOutlierTooltip.js.map +1 -0
  306. package/dist/app/charts/tooltips/useTooltipPlacement.d.ts +51 -0
  307. package/dist/app/charts/tooltips/useTooltipPlacement.d.ts.map +1 -0
  308. package/dist/app/charts/tooltips/useTooltipPlacement.js +52 -0
  309. package/dist/app/charts/tooltips/useTooltipPlacement.js.map +1 -0
  310. package/dist/app/charts/tooltips/useTooltipStyle.d.ts +11 -0
  311. package/dist/app/charts/tooltips/useTooltipStyle.d.ts.map +1 -0
  312. package/dist/app/charts/tooltips/useTooltipStyle.js +14 -0
  313. package/dist/app/charts/tooltips/useTooltipStyle.js.map +1 -0
  314. package/dist/app/charts/trackers/Tracker.d.ts +22 -6
  315. package/dist/app/charts/trackers/Tracker.d.ts.map +1 -0
  316. package/dist/app/charts/trackers/Tracker.js +36 -22
  317. package/dist/app/charts/trackers/Tracker.js.map +1 -1
  318. package/dist/app/charts/trackers/trackerUtils.d.ts +40 -18
  319. package/dist/app/charts/trackers/trackerUtils.d.ts.map +1 -0
  320. package/dist/app/charts/trackers/trackerUtils.js +213 -300
  321. package/dist/app/charts/trackers/trackerUtils.js.map +1 -1
  322. package/dist/app/charts/utils.d.ts +72 -33
  323. package/dist/app/charts/utils.d.ts.map +1 -0
  324. package/dist/app/charts/utils.js +87 -42
  325. package/dist/app/charts/utils.js.map +1 -1
  326. package/dist/index.d.ts +2 -45
  327. package/dist/index.d.ts.map +1 -0
  328. package/dist/index.js +2 -72
  329. package/dist/index.js.map +1 -1
  330. package/package.json +87 -46
  331. package/src/app/charts/Chart.tsx +132 -168
  332. package/src/app/charts/axes/AxesState.ts +27 -29
  333. package/src/app/charts/axes/AxisInterval.ts +57 -32
  334. package/src/app/charts/axes/BaseAxisRange.ts +47 -27
  335. package/src/app/charts/axes/ContinuousAxis.tsx +235 -39
  336. package/src/app/charts/axes/ContinuousAxisRange.ts +29 -11
  337. package/src/app/charts/axes/EmptyAxis.tsx +52 -17
  338. package/src/app/charts/axes/OrdinalAxis.tsx +54 -28
  339. package/src/app/charts/axes/OrdinalAxisRange.ts +96 -16
  340. package/src/app/charts/axes/autoScale.ts +244 -0
  341. package/src/app/charts/axes/axes.ts +954 -735
  342. package/src/app/charts/d3types.ts +42 -13
  343. package/src/app/charts/datasources/StreamingDataSource.ts +214 -0
  344. package/src/app/charts/datasources/iteratesDataSource.ts +122 -0
  345. package/src/app/charts/datasources/ordinalDataSource.ts +205 -0
  346. package/src/app/charts/datasources/outlierDataSource.ts +90 -0
  347. package/src/app/charts/datasources/timeSeriesDataSource.ts +133 -0
  348. package/src/app/charts/filters/regexFilter.ts +45 -5
  349. package/src/app/charts/hooks/AxesProvider.tsx +301 -0
  350. package/src/app/charts/hooks/CanvasSurfaceProvider.tsx +117 -0
  351. package/src/app/charts/hooks/ChartProvider.tsx +79 -0
  352. package/src/app/charts/hooks/InteractionProvider.tsx +88 -0
  353. package/src/app/charts/hooks/PlotDimensionsProvider.tsx +109 -0
  354. package/src/app/charts/hooks/defaultAxesValues.ts +40 -0
  355. package/src/app/charts/hooks/defaultMouseValues.ts +24 -0
  356. package/src/app/charts/hooks/defaultPlotDimensions.ts +27 -0
  357. package/src/app/charts/hooks/defaultTooltipValues.tsx +23 -0
  358. package/src/app/charts/hooks/defaultUseChartValues.tsx +36 -0
  359. package/src/app/charts/hooks/useAxes.tsx +60 -228
  360. package/src/app/charts/hooks/useCanvasSurface.tsx +35 -0
  361. package/src/app/charts/hooks/useChart.tsx +47 -106
  362. package/src/app/charts/hooks/useDataSource.tsx +106 -0
  363. package/src/app/charts/hooks/useHoveredSeries.tsx +33 -0
  364. package/src/app/charts/hooks/useMouse.tsx +58 -82
  365. package/src/app/charts/hooks/usePlotDimensions.tsx +25 -89
  366. package/src/app/charts/hooks/useTooltip.tsx +32 -63
  367. package/src/app/charts/index.ts +213 -0
  368. package/src/app/charts/legends/Legend.tsx +198 -479
  369. package/src/app/charts/legends/constants.ts +37 -0
  370. package/src/app/charts/observables/iterates.ts +32 -12
  371. package/src/app/charts/observables/ordinals.ts +141 -67
  372. package/src/app/charts/observables/outliers.ts +20 -0
  373. package/src/app/charts/plots/BarPlot.tsx +784 -666
  374. package/src/app/charts/plots/OutlierPlot.tsx +685 -0
  375. package/src/app/charts/plots/PoincarePlot.tsx +707 -489
  376. package/src/app/charts/plots/RasterPlot.tsx +253 -445
  377. package/src/app/charts/plots/ScatterPlot.tsx +480 -463
  378. package/src/app/charts/plots/autoScaleYAxes.ts +102 -0
  379. package/src/app/charts/plots/colorizedLine.ts +185 -0
  380. package/src/app/charts/plots/constants.ts +16 -0
  381. package/src/app/charts/plots/hitTesting.ts +198 -0
  382. package/src/app/charts/plots/plot.ts +138 -44
  383. package/src/app/charts/plots/useCanvasZoomPan.ts +240 -0
  384. package/src/app/charts/plots/useStreamingTimeAxes.ts +384 -0
  385. package/src/app/charts/series/baseSeries.ts +81 -14
  386. package/src/app/charts/series/iterateSeries.ts +8 -8
  387. package/src/app/charts/series/ordinalSeries.ts +35 -20
  388. package/src/app/charts/series/outlierSeries.ts +188 -0
  389. package/src/app/charts/series/timeSeries.ts +14 -12
  390. package/src/app/charts/series/timeSeriesChartData.ts +31 -17
  391. package/src/app/charts/styling/barPlotStyle.ts +48 -5
  392. package/src/app/charts/styling/canvasStyle.ts +86 -0
  393. package/src/app/charts/styling/margins.ts +28 -4
  394. package/src/app/charts/styling/svgStyle.ts +10 -91
  395. package/src/app/charts/subscriptions/viewDrivers.ts +447 -0
  396. package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +156 -380
  397. package/src/app/charts/tooltips/DefaultOutlierTooltipContent.tsx +40 -0
  398. package/src/app/charts/tooltips/OutlierPlotTooltipContent.tsx +67 -0
  399. package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +229 -292
  400. package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +164 -217
  401. package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +373 -236
  402. package/src/app/charts/tooltips/Tooltip.tsx +58 -124
  403. package/src/app/charts/tooltips/TooltipContent.tsx +177 -0
  404. package/src/app/charts/tooltips/tooltipUtils.ts +359 -61
  405. package/src/app/charts/tooltips/useOutlierTooltip.tsx +68 -0
  406. package/src/app/charts/tooltips/useTooltipPlacement.ts +86 -0
  407. package/src/app/charts/tooltips/useTooltipStyle.ts +15 -0
  408. package/src/app/charts/trackers/Tracker.tsx +68 -33
  409. package/src/app/charts/trackers/trackerUtils.ts +263 -376
  410. package/src/app/charts/utils.ts +90 -48
  411. package/src/index.ts +2 -322
  412. package/dist/app/charts/axes/AxesState.test.d.ts +0 -1
  413. package/dist/app/charts/axes/AxesState.test.js +0 -30
  414. package/dist/app/charts/axes/AxesState.test.js.map +0 -1
  415. package/dist/app/charts/axes/AxisInterval.test.d.ts +0 -1
  416. package/dist/app/charts/axes/AxisInterval.test.js +0 -120
  417. package/dist/app/charts/axes/AxisInterval.test.js.map +0 -1
  418. package/dist/app/charts/axes/ContinuousAxisRange.test.d.ts +0 -1
  419. package/dist/app/charts/axes/ContinuousAxisRange.test.js +0 -47
  420. package/dist/app/charts/axes/ContinuousAxisRange.test.js.map +0 -1
  421. package/dist/app/charts/axes/OrdinalAxisRange.test.d.ts +0 -1
  422. package/dist/app/charts/axes/OrdinalAxisRange.test.js +0 -48
  423. package/dist/app/charts/axes/OrdinalAxisRange.test.js.map +0 -1
  424. package/dist/app/charts/filters/regexFilter.test.d.ts +0 -1
  425. package/dist/app/charts/filters/regexFilter.test.js +0 -11
  426. package/dist/app/charts/filters/regexFilter.test.js.map +0 -1
  427. package/dist/app/charts/hooks/useDataObservable.d.ts +0 -72
  428. package/dist/app/charts/hooks/useDataObservable.js +0 -74
  429. package/dist/app/charts/hooks/useDataObservable.js.map +0 -1
  430. package/dist/app/charts/hooks/useInitialData.d.ts +0 -36
  431. package/dist/app/charts/hooks/useInitialData.js +0 -28
  432. package/dist/app/charts/hooks/useInitialData.js.map +0 -1
  433. package/dist/app/charts/observables/iterates.test.d.ts +0 -1
  434. package/dist/app/charts/observables/iterates.test.js +0 -180
  435. package/dist/app/charts/observables/iterates.test.js.map +0 -1
  436. package/dist/app/charts/observables/ordinals.test.d.ts +0 -1
  437. package/dist/app/charts/observables/ordinals.test.js +0 -102
  438. package/dist/app/charts/observables/ordinals.test.js.map +0 -1
  439. package/dist/app/charts/series/datumSeries.test.d.ts +0 -1
  440. package/dist/app/charts/series/datumSeries.test.js +0 -50
  441. package/dist/app/charts/series/datumSeries.test.js.map +0 -1
  442. package/dist/app/charts/styling/margins.test.d.ts +0 -1
  443. package/dist/app/charts/styling/margins.test.js +0 -19
  444. package/dist/app/charts/styling/margins.test.js.map +0 -1
  445. package/dist/app/charts/subscriptions/subscription.test.d.ts +0 -1
  446. package/dist/app/charts/subscriptions/subscription.test.js +0 -395
  447. package/dist/app/charts/subscriptions/subscription.test.js.map +0 -1
  448. package/dist/app/charts/subscriptions/subscriptions.d.ts +0 -100
  449. package/dist/app/charts/subscriptions/subscriptions.js +0 -449
  450. package/dist/app/charts/subscriptions/subscriptions.js.map +0 -1
  451. package/src/app/charts/axes/AxesState.test.ts +0 -34
  452. package/src/app/charts/axes/AxisInterval.test.ts +0 -143
  453. package/src/app/charts/axes/ContinuousAxisRange.test.ts +0 -55
  454. package/src/app/charts/axes/OrdinalAxisRange.test.ts +0 -55
  455. package/src/app/charts/filters/regexFilter.test.ts +0 -13
  456. package/src/app/charts/hooks/useDataObservable.tsx +0 -170
  457. package/src/app/charts/hooks/useInitialData.tsx +0 -64
  458. package/src/app/charts/observables/iterates.test.ts +0 -201
  459. package/src/app/charts/observables/ordinals.test.ts +0 -135
  460. package/src/app/charts/series/datumSeries.test.ts +0 -60
  461. package/src/app/charts/styling/margins.test.ts +0 -22
  462. package/src/app/charts/subscriptions/subscription.test.ts +0 -499
  463. 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":"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"}
@@ -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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"}