stream-charts 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/README.md +756 -343
  2. package/changes.md +7 -0
  3. package/dist/src/app/charts/Chart.d.ts +116 -87
  4. package/dist/src/app/charts/Chart.js +96 -101
  5. package/dist/src/app/charts/Chart.js.map +1 -1
  6. package/dist/src/app/charts/axes/AxesState.d.ts +64 -0
  7. package/dist/src/app/charts/axes/AxesState.js +97 -0
  8. package/dist/src/app/charts/axes/AxesState.js.map +1 -0
  9. package/dist/src/app/charts/axes/AxesState.test.js +30 -0
  10. package/dist/src/app/charts/axes/AxesState.test.js.map +1 -0
  11. package/dist/src/app/charts/axes/AxisInterval.d.ts +92 -0
  12. package/dist/src/app/charts/axes/AxisInterval.js +126 -0
  13. package/dist/src/app/charts/axes/AxisInterval.js.map +1 -0
  14. package/dist/src/app/charts/axes/AxisInterval.test.js +120 -0
  15. package/dist/src/app/charts/axes/AxisInterval.test.js.map +1 -0
  16. package/dist/src/app/charts/axes/BaseAxisRange.d.ts +83 -0
  17. package/dist/src/app/charts/axes/BaseAxisRange.js +58 -0
  18. package/dist/src/app/charts/axes/BaseAxisRange.js.map +1 -0
  19. package/dist/src/app/charts/axes/ContinuousAxis.d.ts +22 -0
  20. package/dist/src/app/charts/axes/ContinuousAxis.js +96 -0
  21. package/dist/src/app/charts/axes/ContinuousAxis.js.map +1 -0
  22. package/dist/src/app/charts/axes/ContinuousAxisRange.d.ts +59 -0
  23. package/dist/src/app/charts/axes/ContinuousAxisRange.js +84 -0
  24. package/dist/src/app/charts/axes/ContinuousAxisRange.js.map +1 -0
  25. package/dist/src/app/charts/axes/ContinuousAxisRange.test.js +47 -0
  26. package/dist/src/app/charts/axes/ContinuousAxisRange.test.js.map +1 -0
  27. package/dist/src/app/charts/axes/OrdinalAxis.d.ts +23 -0
  28. package/dist/src/app/charts/axes/OrdinalAxis.js +124 -0
  29. package/dist/src/app/charts/axes/OrdinalAxis.js.map +1 -0
  30. package/dist/src/app/charts/axes/OrdinalAxisRange.d.ts +69 -0
  31. package/dist/src/app/charts/axes/OrdinalAxisRange.js +100 -0
  32. package/dist/src/app/charts/axes/OrdinalAxisRange.js.map +1 -0
  33. package/dist/src/app/charts/axes/OrdinalAxisRange.test.js +48 -0
  34. package/dist/src/app/charts/axes/OrdinalAxisRange.test.js.map +1 -0
  35. package/dist/src/app/charts/axes/axes.d.ts +391 -0
  36. package/dist/src/app/charts/axes/axes.js +1046 -0
  37. package/dist/src/app/charts/axes/axes.js.map +1 -0
  38. package/dist/src/app/charts/d3types.d.ts +10 -10
  39. package/dist/src/app/charts/filters/regexFilter.d.ts +9 -0
  40. package/dist/src/app/charts/filters/regexFilter.js +18 -0
  41. package/dist/src/app/charts/filters/regexFilter.js.map +1 -0
  42. package/dist/src/app/charts/filters/regexFilter.test.d.ts +1 -0
  43. package/dist/src/app/charts/filters/regexFilter.test.js +11 -0
  44. package/dist/src/app/charts/filters/regexFilter.test.js.map +1 -0
  45. package/dist/src/app/charts/hooks/useAxes.d.ts +144 -0
  46. package/dist/src/app/charts/hooks/useAxes.js +187 -0
  47. package/dist/src/app/charts/hooks/useAxes.js.map +1 -0
  48. package/dist/src/app/charts/hooks/useChart.d.ts +30 -201
  49. package/dist/src/app/charts/hooks/useChart.js +33 -134
  50. package/dist/src/app/charts/hooks/useChart.js.map +1 -1
  51. package/dist/src/app/charts/hooks/useDataObservable.d.ts +74 -0
  52. package/dist/src/app/charts/hooks/useDataObservable.js +76 -0
  53. package/dist/src/app/charts/hooks/useDataObservable.js.map +1 -0
  54. package/dist/src/app/charts/hooks/useInitialData.d.ts +38 -0
  55. package/dist/src/app/charts/hooks/useInitialData.js +29 -0
  56. package/dist/src/app/charts/hooks/useInitialData.js.map +1 -0
  57. package/dist/src/app/charts/hooks/useMouse.d.ts +53 -0
  58. package/dist/src/app/charts/hooks/useMouse.js +65 -0
  59. package/dist/src/app/charts/hooks/useMouse.js.map +1 -0
  60. package/dist/src/app/charts/hooks/usePlotDimensions.d.ts +34 -0
  61. package/dist/src/app/charts/hooks/usePlotDimensions.js +73 -0
  62. package/dist/src/app/charts/hooks/usePlotDimensions.js.map +1 -0
  63. package/dist/src/app/charts/hooks/useTooltip.d.ts +64 -0
  64. package/dist/src/app/charts/hooks/useTooltip.js +52 -0
  65. package/dist/src/app/charts/hooks/useTooltip.js.map +1 -0
  66. package/dist/src/app/charts/observables/ChartData.d.ts +23 -0
  67. package/dist/src/app/charts/observables/ChartData.js +20 -0
  68. package/dist/src/app/charts/observables/ChartData.js.map +1 -0
  69. package/dist/src/app/charts/observables/iterates.d.ts +52 -0
  70. package/dist/src/app/charts/observables/iterates.js +121 -0
  71. package/dist/src/app/charts/observables/iterates.js.map +1 -0
  72. package/dist/src/app/charts/observables/iterates.test.d.ts +1 -0
  73. package/dist/src/app/charts/observables/iterates.test.js +180 -0
  74. package/dist/src/app/charts/observables/iterates.test.js.map +1 -0
  75. package/dist/src/app/charts/observables/ordinals.d.ts +75 -0
  76. package/dist/src/app/charts/observables/ordinals.js +141 -0
  77. package/dist/src/app/charts/observables/ordinals.js.map +1 -0
  78. package/dist/src/app/charts/observables/ordinals.test.d.ts +1 -0
  79. package/dist/src/app/charts/observables/ordinals.test.js +102 -0
  80. package/dist/src/app/charts/observables/ordinals.test.js.map +1 -0
  81. package/dist/src/app/charts/plots/BarPlot.d.ts +81 -0
  82. package/dist/src/app/charts/plots/BarPlot.js +557 -0
  83. package/dist/src/app/charts/plots/BarPlot.js.map +1 -0
  84. package/dist/src/app/charts/plots/PoincarePlot.d.ts +78 -0
  85. package/dist/src/app/charts/plots/PoincarePlot.js +504 -0
  86. package/dist/src/app/charts/plots/PoincarePlot.js.map +1 -0
  87. package/dist/src/app/charts/{RasterPlot.d.ts → plots/RasterPlot.d.ts} +1 -1
  88. package/dist/src/app/charts/{RasterPlot.js → plots/RasterPlot.js} +152 -133
  89. package/dist/src/app/charts/plots/RasterPlot.js.map +1 -0
  90. package/dist/src/app/charts/{ScatterPlot.d.ts → plots/ScatterPlot.d.ts} +10 -8
  91. package/dist/src/app/charts/plots/ScatterPlot.js +379 -0
  92. package/dist/src/app/charts/plots/ScatterPlot.js.map +1 -0
  93. package/dist/src/app/charts/{plot.d.ts → plots/plot.d.ts} +12 -14
  94. package/dist/src/app/charts/{plot.js → plots/plot.js} +19 -17
  95. package/dist/src/app/charts/plots/plot.js.map +1 -0
  96. package/dist/src/app/charts/series/baseSeries.d.ts +38 -0
  97. package/dist/src/app/charts/series/baseSeries.js +36 -0
  98. package/dist/src/app/charts/series/baseSeries.js.map +1 -0
  99. package/dist/src/app/charts/series/datumSeries.test.d.ts +1 -0
  100. package/dist/src/app/charts/series/datumSeries.test.js +50 -0
  101. package/dist/src/app/charts/series/datumSeries.test.js.map +1 -0
  102. package/dist/src/app/charts/series/iterateSeries.d.ts +42 -0
  103. package/dist/src/app/charts/series/iterateSeries.js +34 -0
  104. package/dist/src/app/charts/series/iterateSeries.js.map +1 -0
  105. package/dist/src/app/charts/series/ordinalSeries.d.ts +54 -0
  106. package/dist/src/app/charts/series/ordinalSeries.js +98 -0
  107. package/dist/src/app/charts/series/ordinalSeries.js.map +1 -0
  108. package/dist/src/app/charts/series/timeSeries.d.ts +30 -0
  109. package/dist/src/app/charts/series/timeSeries.js +19 -0
  110. package/dist/src/app/charts/series/timeSeries.js.map +1 -0
  111. package/dist/src/app/charts/{chartData.d.ts → series/timeSeriesChartData.d.ts} +11 -6
  112. package/dist/src/app/charts/series/timeSeriesChartData.js +32 -0
  113. package/dist/src/app/charts/series/timeSeriesChartData.js.map +1 -0
  114. package/dist/src/app/charts/styling/barPlotStyle.d.ts +41 -0
  115. package/dist/src/app/charts/styling/barPlotStyle.js +84 -0
  116. package/dist/src/app/charts/styling/barPlotStyle.js.map +1 -0
  117. package/dist/src/app/charts/{margins.d.ts → styling/margins.d.ts} +7 -5
  118. package/dist/src/app/charts/{margins.js → styling/margins.js} +19 -9
  119. package/dist/src/app/charts/styling/margins.js.map +1 -0
  120. package/dist/src/app/charts/styling/margins.test.d.ts +1 -0
  121. package/dist/src/app/charts/styling/margins.test.js +19 -0
  122. package/dist/src/app/charts/styling/margins.test.js.map +1 -0
  123. package/dist/src/app/charts/styling/svgStyle.d.ts +76 -0
  124. package/dist/src/app/charts/styling/svgStyle.js +84 -0
  125. package/dist/src/app/charts/styling/svgStyle.js.map +1 -0
  126. package/dist/src/app/charts/subscriptions/subscription.test.d.ts +1 -0
  127. package/dist/src/app/charts/subscriptions/subscription.test.js +395 -0
  128. package/dist/src/app/charts/subscriptions/subscription.test.js.map +1 -0
  129. package/dist/src/app/charts/subscriptions/subscriptions.d.ts +100 -0
  130. package/dist/src/app/charts/subscriptions/subscriptions.js +449 -0
  131. package/dist/src/app/charts/subscriptions/subscriptions.js.map +1 -0
  132. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.d.ts +90 -0
  133. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js +302 -0
  134. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -0
  135. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +100 -0
  136. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js +190 -0
  137. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -0
  138. package/dist/src/app/charts/{RasterPlotTooltipContent.js → tooltips/RasterPlotTooltipContent.js} +40 -44
  139. package/dist/src/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -0
  140. package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js +154 -0
  141. package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -0
  142. package/dist/src/app/charts/{Tooltip.d.ts → tooltips/Tooltip.d.ts} +4 -2
  143. package/dist/src/app/charts/{Tooltip.js → tooltips/Tooltip.js} +23 -28
  144. package/dist/src/app/charts/tooltips/Tooltip.js.map +1 -0
  145. package/dist/src/app/charts/{tooltipUtils.d.ts → tooltips/tooltipUtils.d.ts} +11 -6
  146. package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +33 -17
  147. package/dist/src/app/charts/tooltips/tooltipUtils.js.map +1 -0
  148. package/dist/src/app/charts/{Tracker.d.ts → trackers/Tracker.d.ts} +6 -5
  149. package/dist/src/app/charts/trackers/Tracker.js +60 -0
  150. package/dist/src/app/charts/trackers/Tracker.js.map +1 -0
  151. package/dist/src/app/charts/{trackerUtils.d.ts → trackers/trackerUtils.d.ts} +13 -8
  152. package/dist/src/app/charts/trackers/trackerUtils.js +359 -0
  153. package/dist/src/app/charts/trackers/trackerUtils.js.map +1 -0
  154. package/dist/src/app/charts/utils.d.ts +22 -32
  155. package/dist/src/app/charts/utils.js +36 -37
  156. package/dist/src/app/charts/utils.js.map +1 -1
  157. package/dist/src/index.d.ts +48 -15
  158. package/dist/src/index.js +71 -15
  159. package/dist/src/index.js.map +1 -1
  160. package/package.json +30 -20
  161. package/src/app/charts/Chart.tsx +334 -0
  162. package/src/app/charts/axes/AxesState.test.ts +34 -0
  163. package/src/app/charts/axes/AxesState.ts +112 -0
  164. package/src/app/charts/axes/AxisInterval.test.ts +143 -0
  165. package/src/app/charts/axes/AxisInterval.ts +139 -0
  166. package/src/app/charts/axes/BaseAxisRange.ts +113 -0
  167. package/src/app/charts/axes/ContinuousAxis.tsx +192 -0
  168. package/src/app/charts/axes/ContinuousAxisRange.test.ts +55 -0
  169. package/src/app/charts/axes/ContinuousAxisRange.ts +96 -0
  170. package/src/app/charts/axes/OrdinalAxis.tsx +223 -0
  171. package/src/app/charts/axes/OrdinalAxisRange.test.ts +55 -0
  172. package/src/app/charts/axes/OrdinalAxisRange.ts +112 -0
  173. package/src/app/charts/axes/axes.ts +1569 -0
  174. package/src/app/charts/d3types.ts +16 -0
  175. package/src/app/charts/filters/regexFilter.test.ts +13 -0
  176. package/src/app/charts/filters/regexFilter.ts +17 -0
  177. package/src/app/charts/hooks/useAxes.tsx +341 -0
  178. package/src/app/charts/hooks/useChart.tsx +159 -0
  179. package/src/app/charts/hooks/useDataObservable.tsx +175 -0
  180. package/src/app/charts/hooks/useInitialData.tsx +65 -0
  181. package/src/app/charts/hooks/useMouse.tsx +125 -0
  182. package/src/app/charts/hooks/usePlotDimensions.tsx +120 -0
  183. package/src/app/charts/hooks/useTooltip.tsx +112 -0
  184. package/src/app/charts/observables/ChartData.ts +31 -0
  185. package/src/app/charts/observables/iterates.test.ts +201 -0
  186. package/src/app/charts/observables/iterates.ts +203 -0
  187. package/src/app/charts/observables/ordinals.test.ts +135 -0
  188. package/src/app/charts/observables/ordinals.ts +248 -0
  189. package/src/app/charts/plots/BarPlot.tsx +1088 -0
  190. package/src/app/charts/plots/PoincarePlot.tsx +832 -0
  191. package/src/app/charts/plots/RasterPlot.tsx +676 -0
  192. package/src/app/charts/plots/ScatterPlot.tsx +653 -0
  193. package/src/app/charts/plots/plot.ts +75 -0
  194. package/src/app/charts/series/baseSeries.ts +52 -0
  195. package/src/app/charts/series/datumSeries.test.ts +60 -0
  196. package/src/app/charts/series/iterateSeries.ts +56 -0
  197. package/src/app/charts/series/ordinalSeries.ts +164 -0
  198. package/src/app/charts/series/timeSeries.ts +40 -0
  199. package/src/app/charts/series/timeSeriesChartData.ts +68 -0
  200. package/src/app/charts/styling/barPlotStyle.ts +126 -0
  201. package/src/app/charts/styling/margins.test.ts +22 -0
  202. package/src/app/charts/styling/margins.ts +58 -0
  203. package/src/app/charts/styling/svgStyle.ts +118 -0
  204. package/src/app/charts/subscriptions/subscription.test.ts +499 -0
  205. package/src/app/charts/subscriptions/subscriptions.ts +635 -0
  206. package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +440 -0
  207. package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +352 -0
  208. package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +274 -0
  209. package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +319 -0
  210. package/src/app/charts/tooltips/Tooltip.tsx +148 -0
  211. package/src/app/charts/tooltips/tooltipUtils.ts +216 -0
  212. package/src/app/charts/trackers/Tracker.tsx +129 -0
  213. package/src/app/charts/trackers/trackerUtils.ts +494 -0
  214. package/src/app/charts/utils.ts +109 -0
  215. package/dist/src/app/charts/CategoryAxis.d.ts +0 -20
  216. package/dist/src/app/charts/CategoryAxis.js +0 -112
  217. package/dist/src/app/charts/CategoryAxis.js.map +0 -1
  218. package/dist/src/app/charts/ContinuousAxis.d.ts +0 -16
  219. package/dist/src/app/charts/ContinuousAxis.js +0 -186
  220. package/dist/src/app/charts/ContinuousAxis.js.map +0 -1
  221. package/dist/src/app/charts/RasterPlot.js.map +0 -1
  222. package/dist/src/app/charts/RasterPlotTooltipContent.js.map +0 -1
  223. package/dist/src/app/charts/ScatterPlot.js +0 -351
  224. package/dist/src/app/charts/ScatterPlot.js.map +0 -1
  225. package/dist/src/app/charts/ScatterPlotTooltipContent.js +0 -163
  226. package/dist/src/app/charts/ScatterPlotTooltipContent.js.map +0 -1
  227. package/dist/src/app/charts/Tooltip.js.map +0 -1
  228. package/dist/src/app/charts/Tracker.js +0 -65
  229. package/dist/src/app/charts/Tracker.js.map +0 -1
  230. package/dist/src/app/charts/axes.d.ts +0 -132
  231. package/dist/src/app/charts/axes.js +0 -265
  232. package/dist/src/app/charts/axes.js.map +0 -1
  233. package/dist/src/app/charts/chartData.js +0 -32
  234. package/dist/src/app/charts/chartData.js.map +0 -1
  235. package/dist/src/app/charts/continuousAxisRangeFor.d.ts +0 -20
  236. package/dist/src/app/charts/continuousAxisRangeFor.js +0 -68
  237. package/dist/src/app/charts/continuousAxisRangeFor.js.map +0 -1
  238. package/dist/src/app/charts/datumSeries.d.ts +0 -59
  239. package/dist/src/app/charts/datumSeries.js +0 -55
  240. package/dist/src/app/charts/datumSeries.js.map +0 -1
  241. package/dist/src/app/charts/datumSeries.test.js +0 -50
  242. package/dist/src/app/charts/datumSeries.test.js.map +0 -1
  243. package/dist/src/app/charts/hooks/AxesState.d.ts +0 -37
  244. package/dist/src/app/charts/hooks/AxesState.js +0 -44
  245. package/dist/src/app/charts/hooks/AxesState.js.map +0 -1
  246. package/dist/src/app/charts/margins.js.map +0 -1
  247. package/dist/src/app/charts/margins.test.js +0 -14
  248. package/dist/src/app/charts/margins.test.js.map +0 -1
  249. package/dist/src/app/charts/plot.js.map +0 -1
  250. package/dist/src/app/charts/regexFilter.d.ts +0 -9
  251. package/dist/src/app/charts/regexFilter.js +0 -17
  252. package/dist/src/app/charts/regexFilter.js.map +0 -1
  253. package/dist/src/app/charts/regexFilter.test.js +0 -11
  254. package/dist/src/app/charts/regexFilter.test.js.map +0 -1
  255. package/dist/src/app/charts/subscriptions.d.ts +0 -43
  256. package/dist/src/app/charts/subscriptions.js +0 -213
  257. package/dist/src/app/charts/subscriptions.js.map +0 -1
  258. package/dist/src/app/charts/svgStyle.d.ts +0 -27
  259. package/dist/src/app/charts/svgStyle.js +0 -32
  260. package/dist/src/app/charts/svgStyle.js.map +0 -1
  261. package/dist/src/app/charts/timeRange.test.js +0 -54
  262. package/dist/src/app/charts/timeRange.test.js.map +0 -1
  263. package/dist/src/app/charts/tooltipUtils.js.map +0 -1
  264. package/dist/src/app/charts/trackerUtils.js +0 -130
  265. package/dist/src/app/charts/trackerUtils.js.map +0 -1
  266. /package/dist/src/app/charts/{datumSeries.test.d.ts → axes/AxesState.test.d.ts} +0 -0
  267. /package/dist/src/app/charts/{margins.test.d.ts → axes/AxisInterval.test.d.ts} +0 -0
  268. /package/dist/src/app/charts/{regexFilter.test.d.ts → axes/ContinuousAxisRange.test.d.ts} +0 -0
  269. /package/dist/src/app/charts/{timeRange.test.d.ts → axes/OrdinalAxisRange.test.d.ts} +0 -0
  270. /package/dist/src/app/charts/{RasterPlotTooltipContent.d.ts → tooltips/RasterPlotTooltipContent.d.ts} +0 -0
  271. /package/dist/src/app/charts/{ScatterPlotTooltipContent.d.ts → tooltips/ScatterPlotTooltipContent.d.ts} +0 -0
@@ -1,351 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { useCallback, useEffect, useMemo, useRef } from 'react';
13
- import { useChart } from "./hooks/useChart";
14
- import { continuousAxisRangeFor } from "./continuousAxisRangeFor";
15
- import * as d3 from "d3";
16
- import { setClipPath } from "./plot";
17
- import { axesForSeriesGen, defaultLineStyle, panHandler, timeIntervals, timeRanges, zoomHandler } from "./axes";
18
- import { noop } from "./utils";
19
- import { defaultTooltipStyle } from "./tooltipUtils";
20
- import { subscriptionFor, subscriptionWithCadenceFor } from "./subscriptions";
21
- /**
22
- * Renders a streaming scatter plot for the series in the initial data and those sourced by the
23
- * observable specified as a property in the {@link Chart}. This component uses the {@link useChart}
24
- * hook, and therefore must be a child of the {@link Chart} in order to be plugged in to the
25
- * chart ecosystem (axes, tracker, tooltip).
26
- *
27
- * @param props The properties associated with the scatter plot
28
- * @constructor
29
- * @example
30
- <ScatterPlot
31
- interpolation={interpolation}
32
- axisAssignments={new Map([
33
- ['test2', assignAxes("x-axis-2", "y-axis-2")],
34
- ])}
35
- dropDataAfter={10000}
36
- panEnabled={true}
37
- zoomEnabled={true}
38
- zoomKeyModifiersRequired={true}
39
- />
40
- */
41
- export function ScatterPlot(props) {
42
- var _a = useChart(), chartId = _a.chartId, container = _a.container, mainG = _a.mainG, xAxesState = _a.xAxesState, yAxesState = _a.yAxesState, setTimeRangeFor = _a.setTimeRangeFor, plotDimensions = _a.plotDimensions, margin = _a.margin, color = _a.color, seriesStyles = _a.seriesStyles, initialData = _a.initialData, seriesFilter = _a.seriesFilter, seriesObservable = _a.seriesObservable, _b = _a.windowingTime, windowingTime = _b === void 0 ? 100 : _b, shouldSubscribe = _a.shouldSubscribe, _c = _a.onSubscribe, onSubscribe = _c === void 0 ? noop : _c, onUpdateTime = _a.onUpdateTime, onUpdateData = _a.onUpdateData, _d = _a.updateTimeRanges, updateTimeRanges = _d === void 0 ? noop : _d, mouseOverHandlerFor = _a.mouseOverHandlerFor, mouseLeaveHandlerFor = _a.mouseLeaveHandlerFor;
43
- var _e = props.axisAssignments, axisAssignments = _e === void 0 ? new Map() : _e, _f = props.interpolation, interpolation = _f === void 0 ? d3.curveLinear : _f, _g = props.dropDataAfter, dropDataAfter = _g === void 0 ? Infinity : _g, _h = props.panEnabled, panEnabled = _h === void 0 ? false : _h, _j = props.zoomEnabled, zoomEnabled = _j === void 0 ? false : _j, _k = props.zoomKeyModifiersRequired, zoomKeyModifiersRequired = _k === void 0 ? true : _k, withCadenceOf = props.withCadenceOf;
44
- // some 'splainin: the dataRef holds on to a copy of the initial data, but, the Series in the array
45
- // are by reference, so the seriesRef, also holds on to the same Series. When the Series in seriesRef
46
- // get appended with new data, it's updating the underlying series, and so the dataRef sees those
47
- // changes as well. The dataRef is used for performance, so that in the updatePlot function we don't
48
- // need to create a temporary array to holds the series data, rather, we can just use the one held in
49
- // the dataRef.
50
- var dataRef = useRef(initialData.slice());
51
- var seriesRef = useRef(new Map(initialData.map(function (series) { return [series.name, series]; })));
52
- // map(axis_id -> current_time) -- maps the axis ID to the current time for that axis
53
- var currentTimeRef = useRef(new Map());
54
- useEffect(function () {
55
- currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(function (id) { return [id, 0]; }));
56
- }, [xAxesState]);
57
- // calculates the distinct series IDs that cover all the series in the plot
58
- var axesForSeries = useMemo(function () { return axesForSeriesGen(initialData, axisAssignments, xAxesState); }, [initialData, axisAssignments, xAxesState]);
59
- // updates the timing using the onUpdateTime and updatePlot references. This and the references
60
- // defined above allow the axes' times to be update properly by avoid stale reference to these
61
- // functions.
62
- var updateTimingAndPlot = useCallback(function (ranges) {
63
- if (mainG !== null) {
64
- onUpdateTimeRef.current(ranges);
65
- updatePlotRef.current(ranges, mainG);
66
- if (onUpdateTime) {
67
- setTimeout(function () {
68
- var times = new Map();
69
- ranges.forEach(function (range, name) { return times.set(name, [range.start, range.end]); });
70
- onUpdateTime(times);
71
- }, 0);
72
- }
73
- }
74
- }, [mainG, onUpdateTime]);
75
- // todo find better way
76
- // when the initial data changes, then reset the plot. note that the initial data doesn't change
77
- // during the normal course of updates from the observable, only when the plot is restarted.
78
- useEffect(function () {
79
- dataRef.current = initialData.slice();
80
- seriesRef.current = new Map(initialData.map(function (series) { return [series.name, series]; }));
81
- currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(function (id) { return [id, 0]; }));
82
- updateTimingAndPlot(new Map(Array.from(timeRanges(xAxesState.axes).entries())
83
- .map(function (_a) {
84
- var id = _a[0], range = _a[1];
85
- // grab the current range, then calculate the minimum time from the initial data, and
86
- // set that as the start, and then add the range to it for the end time
87
- var _b = range.original, start = _b[0], end = _b[1];
88
- var minTime = initialData
89
- .filter(function (srs) { var _a; return ((_a = axisAssignments.get(srs.name)) === null || _a === void 0 ? void 0 : _a.xAxis) === id; })
90
- .reduce(function (tMin, series) { return Math.min(tMin, !series.isEmpty() ? series.data[0].time : tMin); }, Infinity);
91
- var startTime = minTime === Infinity ? 0 : minTime;
92
- return [id, continuousAxisRangeFor(startTime, startTime + end - start)];
93
- })));
94
- },
95
- // ** not happy about this **
96
- // only want this effect to run when the initial data is changed, which mean all the
97
- // other dependencies are recalculated anyway.
98
- // eslint-disable-next-line react-hooks/exhaustive-deps
99
- [initialData]);
100
- /**
101
- * Adjusts the time-range and updates the plot when the plot is dragged to the left or right
102
- * @param deltaX The amount that the plot is dragged
103
- * @param plotDimensions The dimensions of the plot
104
- * @param series An array of series names
105
- * @param ranges A map holding the axis ID and its associated time range
106
- */
107
- var onPan = useCallback(function (x, plotDimensions, series, ranges) { return panHandler(axesForSeries, margin, setTimeRangeFor, xAxesState)(x, plotDimensions, series, ranges); }, [axesForSeries, margin, setTimeRangeFor, xAxesState]);
108
- /**
109
- * Called when the user uses the scroll wheel (or scroll gesture) to zoom in or out. Zooms in/out
110
- * at the location of the mouse when the scroll wheel or gesture was applied.
111
- * @param transform The d3 zoom transformation information
112
- * @param x The x-position of the mouse when the scroll wheel or gesture is used
113
- * @param plotDimensions The dimensions of the plot
114
- * @param series An array of series names
115
- * @param ranges A map holding the axis ID and its associated time-range
116
- */
117
- var onZoom = useCallback(function (transform, x, plotDimensions, series, ranges) { return zoomHandler(axesForSeries, margin, setTimeRangeFor, xAxesState)(transform, x, plotDimensions, series, ranges); }, [axesForSeries, margin, setTimeRangeFor, xAxesState]);
118
- var updatePlot = useCallback(
119
- /**
120
- * Updates the plot data for the specified time-range, which may have changed due to zoom or pan
121
- * @param timeRanges The current time range
122
- * @param mainGElem The main <g> element selection for that holds the plot
123
- */
124
- function (timeRanges, mainGElem) {
125
- if (container) {
126
- // select the svg element bind the data to them
127
- var svg = d3.select(container);
128
- // create a map associating series-names to their time-series.
129
- //
130
- // performance-related confusion: wondering where the dataRef is updated? well it isn't
131
- // directly. The dataRef holds on to an array of references to the Series. And so does the
132
- // seriesRef, though is uses a map(series_name -> series). The seriesRef is use to append
133
- // data to the underlying Series, and the dataRef is used so that we can just use
134
- // dataRef.current and don't have to do Array.from(seriesRef.current.values()) which
135
- // creates a temporary array
136
- var boundedSeries_1 = new Map(dataRef.current.map(function (series) { return [
137
- series.name,
138
- series.data.map(function (datum) { return [datum.time, datum.value]; })
139
- ]; }));
140
- // set up panning
141
- if (panEnabled) {
142
- var drag = d3.drag()
143
- .on("start", function () {
144
- // todo during a pan, we want to hide the tooltip
145
- d3.select(container).style("cursor", "move");
146
- })
147
- .on("drag", function (event) {
148
- onPan(event.dx, plotDimensions, Array.from(boundedSeries_1.keys()), timeRanges);
149
- updatePlotRef.current(timeRanges, mainGElem);
150
- })
151
- .on("end", function () {
152
- // todo if the tooltip was originally visible, then allow it to be seen again
153
- d3.select(container).style("cursor", "auto");
154
- });
155
- svg.call(drag);
156
- }
157
- // set up for zooming
158
- if (zoomEnabled) {
159
- var zoom = d3.zoom()
160
- .filter(function (event) { return !zoomKeyModifiersRequired || event.shiftKey || event.ctrlKey; })
161
- .scaleExtent([0, 10])
162
- .translateExtent([[margin.left, margin.top], [plotDimensions.width, plotDimensions.height]])
163
- .on("zoom", function (event) {
164
- onZoom(event.transform, event.sourceEvent.offsetX - margin.left, plotDimensions, Array.from(boundedSeries_1.keys()), timeRanges);
165
- updatePlotRef.current(timeRanges, mainGElem);
166
- });
167
- svg.call(zoom);
168
- }
169
- // define the clip-path so that the series lines don't go beyond the plot area
170
- var clipPathId_1 = setClipPath(chartId, svg, plotDimensions, margin);
171
- boundedSeries_1.forEach(function (data, name) {
172
- // grab the x and y axes assigned to the series, and if either or both
173
- // axes aren't found, then give up and return
174
- var _a = axesFor(name, axisAssignments, xAxesState.axisFor, yAxesState.axisFor), xAxisLinear = _a[0], yAxisLinear = _a[1];
175
- if (xAxisLinear === undefined || yAxisLinear === undefined)
176
- return;
177
- // grab the style for the series
178
- var _b = seriesStyles.get(name) || __assign(__assign({}, defaultLineStyle), { highlightColor: defaultLineStyle.color }), color = _b.color, lineWidth = _b.lineWidth;
179
- // only show the data for which the filter matches
180
- var plotData = (name.match(seriesFilter)) ? data : [];
181
- // create the time-series paths
182
- mainGElem
183
- .selectAll("#" + name + "-" + chartId + "-scatter")
184
- .data([[], plotData], function () { return "" + name; })
185
- .join(function (enter) { return enter
186
- .append("path")
187
- .attr("class", 'time-series-lines')
188
- .attr("id", name + "-" + chartId + "-scatter")
189
- .attr("d", d3.line()
190
- .x(function (d) { return xAxisLinear.scale(d[0]) || 0; })
191
- .y(function (d) { return yAxisLinear.scale(d[1]) || 0; })
192
- .curve(interpolation))
193
- .attr("fill", "none")
194
- .attr("stroke", color)
195
- .attr("stroke-width", lineWidth)
196
- .attr('transform', "translate(" + margin.left + ", " + margin.top + ")")
197
- .attr("clip-path", "url(#" + clipPathId_1 + ")")
198
- .on("mouseover", function (event, datumArray) {
199
- // recall that this handler is passed down via the "useChart" hook
200
- return handleMouseOverSeries(chartId, container, xAxisLinear, name, datumArray, event, margin, defaultTooltipStyle, seriesStyles, plotDimensions, mouseOverHandlerFor("tooltip-" + chartId));
201
- })
202
- .on("mouseleave", function (event) { return handleMouseLeaveSeries(name, event.currentTarget, seriesStyles, mouseLeaveHandlerFor("tooltip-" + chartId)); }); }, function (update) { return update; }, function (exit) { return exit.remove(); });
203
- });
204
- }
205
- }, [
206
- container, panEnabled, zoomEnabled, chartId, plotDimensions, margin, onPan,
207
- zoomKeyModifiersRequired, onZoom, axisAssignments, xAxesState.axisFor,
208
- yAxesState.axisFor, seriesStyles, seriesFilter, interpolation,
209
- mouseOverHandlerFor, mouseLeaveHandlerFor
210
- ]);
211
- // need to keep the function references for use by the subscription, which forms a closure
212
- // on them. without the references, the closures become stale, and resizing during streaming
213
- // doesn't work properly
214
- var updatePlotRef = useRef(updatePlot);
215
- useEffect(function () {
216
- updatePlotRef.current = updatePlot;
217
- }, [updatePlot]);
218
- var onUpdateTimeRef = useRef(updateTimeRanges);
219
- useEffect(function () {
220
- onUpdateTimeRef.current = updateTimeRanges;
221
- }, [updateTimeRanges]);
222
- // memoized function for subscribing to the chart-data observable
223
- var subscribe = useCallback(function () {
224
- if (seriesObservable === undefined || mainG === null)
225
- return undefined;
226
- if (withCadenceOf !== undefined) {
227
- return subscriptionWithCadenceFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot, seriesRef.current, function (axisId, end) { return currentTimeRef.current.set(axisId, end); }, withCadenceOf);
228
- }
229
- return subscriptionFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot, seriesRef.current, function (axisId, end) { return currentTimeRef.current.set(axisId, end); });
230
- }, [
231
- axisAssignments, dropDataAfter, mainG,
232
- onSubscribe, onUpdateData,
233
- seriesObservable, updateTimingAndPlot, windowingTime, xAxesState,
234
- withCadenceOf
235
- ]);
236
- var timeRangesRef = useRef(new Map());
237
- useEffect(function () {
238
- if (container && mainG) {
239
- // so this gets a bit complicated. the time-ranges need to be updated whenever the time-ranges
240
- // change. for example, as data is streamed in, the times change, and then we need to update the
241
- // time-range. however, we want to keep the time-ranges to reflect their original scale so that
242
- // we can zoom properly (so the updates can't fuck with the scale). At the same time, when the
243
- // interpolation changes, then the update plot changes, and the time-ranges must maintain their
244
- // original scale as well.
245
- if (timeRangesRef.current.size === 0) {
246
- // when no time-ranges have yet been created, then create them and hold on to a mutable
247
- // reference to them
248
- timeRangesRef.current = timeRanges(xAxesState.axes);
249
- }
250
- else {
251
- // when the time-ranges already exist, then we want to update the time-ranges for each
252
- // existing time-range in a way that maintains the original scale.
253
- var intervals_1 = timeIntervals(xAxesState.axes);
254
- timeRangesRef.current
255
- .forEach(function (range, id, rangesMap) {
256
- var _a = intervals_1.get(id) || [NaN, NaN], start = _a[0], end = _a[1];
257
- if (!isNaN(start) && !isNaN(end)) {
258
- // update the reference map with the new (start, end) portion of the range,
259
- // while keeping the original scale intact
260
- rangesMap.set(id, range.update(start, end));
261
- }
262
- });
263
- }
264
- updatePlot(timeRangesRef.current, mainG);
265
- }
266
- }, [chartId, color, container, mainG, plotDimensions, updatePlot, xAxesState]);
267
- // subscribe/unsubscribe to the observable chart data. when the `shouldSubscribe`
268
- // is changed to `true` and we haven't subscribed yet, then subscribe. when the
269
- // `shouldSubscribe` is `false` and we had subscribed, then unsubscribe. otherwise,
270
- // do nothing.
271
- var subscriptionRef = useRef();
272
- useEffect(function () {
273
- var _a;
274
- if (shouldSubscribe && subscriptionRef.current === undefined) {
275
- subscriptionRef.current = subscribe();
276
- }
277
- else if (!shouldSubscribe && subscriptionRef.current !== undefined) {
278
- (_a = subscriptionRef.current) === null || _a === void 0 ? void 0 : _a.unsubscribe();
279
- subscriptionRef.current = undefined;
280
- }
281
- }, [shouldSubscribe, subscribe]);
282
- return null;
283
- }
284
- /**
285
- * Attempts to locate the x- and y-axes for the specified series. If no axis is found for the
286
- * series name, then uses the default returned by the useChart() hook
287
- * @param seriesName Name of the series for which to retrieve the axis
288
- * @param axisAssignments A map holding the series name and the associated x- and y-axes assigned
289
- * to that series. Note that the series in the axis-assignment map is merely a subset of the set
290
- * of series names.
291
- * @param xAxisFor The function that accepts an axis ID and returns the corresponding x-axis
292
- * @param yAxisFor The function that accepts an axis ID and returns the corresponding y-axis
293
- */
294
- function axesFor(seriesName, axisAssignments, xAxisFor, yAxisFor) {
295
- var axes = axisAssignments.get(seriesName);
296
- var xAxis = xAxisFor((axes === null || axes === void 0 ? void 0 : axes.xAxis) || "");
297
- var xAxisLinear = xAxis;
298
- var yAxis = yAxisFor((axes === null || axes === void 0 ? void 0 : axes.yAxis) || "");
299
- var yAxisLinear = yAxis;
300
- if (xAxis && !xAxisLinear) {
301
- throw Error("Scatter plot requires that x-axis be of type LinearAxis");
302
- }
303
- if (yAxis && !yAxisLinear) {
304
- throw Error("Scatter plot requires that y-axis be of type LinearAxis");
305
- }
306
- return [xAxisLinear, yAxisLinear];
307
- }
308
- /**
309
- * Renders a tooltip showing the neuron, spike time, and the spike strength when the mouse hovers over a spike.
310
- * @param chartId The ID of the chart
311
- * @param container The chart container
312
- * @param xAxis The x-axis
313
- * @param seriesName The name of the series (i.e. the neuron ID)
314
- * @param series The time series
315
- * @param event The mouse-over series event
316
- * @param margin The plot margin
317
- * @param tooltipStyle The tooltip style information
318
- * @param seriesStyles The series style information (needed for (un)highlighting)
319
- * @param plotDimensions The dimensions of the plot
320
- * @param mouseOverHandlerFor The handler for the mouse over (registered by the <Tooltip/>)
321
- */
322
- function handleMouseOverSeries(chartId, container, xAxis, seriesName, series, event, margin, tooltipStyle, seriesStyles, plotDimensions, mouseOverHandlerFor) {
323
- // grab the time needed for the tooltip ID
324
- var _a = d3.pointer(event, container), x = _a[0], y = _a[1];
325
- var time = Math.round(xAxis.scale.invert(x - margin.left));
326
- var _b = seriesStyles.get(seriesName) || defaultLineStyle, highlightColor = _b.highlightColor, highlightWidth = _b.highlightWidth;
327
- // Use d3 to select element, change color and size
328
- d3.select(event.currentTarget)
329
- .attr('stroke', highlightColor)
330
- .attr('stroke-width', highlightWidth);
331
- if (mouseOverHandlerFor) {
332
- mouseOverHandlerFor(seriesName, time, series, [x, y]);
333
- }
334
- }
335
- /**
336
- * Unselects the time series and calls the mouse-leave-series handler registered for this series.
337
- * @param seriesName The name of the series (i.e. the neuron ID)
338
- * @param segment The SVG line element representing the spike, over which the mouse is hovering.
339
- * @param seriesStyles The styles for the series (for (un)highlighting)
340
- * @param mouseLeaverHandlerFor Registered handler for the series when the mouse leaves
341
- */
342
- function handleMouseLeaveSeries(seriesName, segment, seriesStyles, mouseLeaverHandlerFor) {
343
- var _a = seriesStyles.get(seriesName) || defaultLineStyle, color = _a.color, lineWidth = _a.lineWidth;
344
- d3.select(segment)
345
- .attr('stroke', color)
346
- .attr('stroke-width', lineWidth);
347
- if (mouseLeaverHandlerFor) {
348
- mouseLeaverHandlerFor(seriesName);
349
- }
350
- }
351
- //# sourceMappingURL=ScatterPlot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../../../../src/app/charts/ScatterPlot.tsx"],"names":[],"mappings":"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"}
@@ -1,163 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { boundingPoints, defaultTooltipStyle, tooltipX, tooltipY } from "./tooltipUtils";
13
- import * as d3 from "d3";
14
- import { formatTime, formatTimeChange, formatValue, formatValueChange } from "./utils";
15
- import { useEffect, useMemo } from "react";
16
- import { useChart } from "./hooks/useChart";
17
- /**
18
- * Adds tooltip content as a table. The columns of the table are the "label", the value before
19
- * the mouse cursor, then value after the mouse cursor, and the difference between the two values.
20
- * The rows of the table are x-values for the first row, and the y-values for the second row.
21
- * The table has the following form.
22
- * ```
23
- * series name
24
- * before after ∆
25
- * x-label x_tb x_ta x_ta - x_tb
26
- * y-label y_tb y_ta y_ta - y_tb
27
- * ```
28
- *
29
- * Registers the tooltip-content provider with the `ChartContext` so that when d3 fires a mouse-over
30
- * event on a series. The content provider is returns the {@link addTooltipContent} function
31
- * when called. And when called the {@link addTooltipContent} function adds the actual tooltip
32
- * content to the SVG element.
33
- * @param props The properties describing the tooltip content
34
- * @return null
35
- * @constructor
36
- */
37
- export function ScatterPlotTooltipContent(props) {
38
- var _a = useChart(), chartId = _a.chartId, container = _a.container, margin = _a.margin, plotDimensions = _a.plotDimensions, registerTooltipContentProvider = _a.registerTooltipContentProvider;
39
- var xLabel = props.xLabel, yLabel = props.yLabel, _b = props.beforeHeader, beforeHeader = _b === void 0 ? 'before' : _b, _c = props.afterHeader, afterHeader = _c === void 0 ? 'after' : _c, _d = props.deltaHeader, deltaHeader = _d === void 0 ? '∆' : _d, _e = props.xValueFormatter, xValueFormatter = _e === void 0 ? formatTime : _e, _f = props.yValueFormatter, yValueFormatter = _f === void 0 ? formatValue : _f, _g = props.xChangeFormatter, xChangeFormatter = _g === void 0 ? formatTimeChange : _g, _h = props.yChangeFormatter, yChangeFormatter = _h === void 0 ? formatValueChange : _h, style = props.style;
40
- var tooltipStyle = useMemo(function () { return (__assign(__assign({}, defaultTooltipStyle), style)); }, [style]);
41
- // register the tooltip content provider, which when called on mouse-enter-series events
42
- // will render the tooltip container and then the tooltip content. recall that that the
43
- // tooltip content is generated in this plot (because this is the plot that holds all the
44
- // information needed to render it), and the container for the content is rendered by
45
- // the <Tooltip>, which this know nothing about.
46
- //
47
- // the 'registration function accepts a function of the form (seriesName, time, series) => TooltipDimensions.
48
- // and that function has a closure on the content-specific information needed to add the
49
- // actual content
50
- useEffect(function () {
51
- if (container) {
52
- // assemble the options for adding the tooltip
53
- var options_1 = {
54
- labels: { x: xLabel, y: yLabel },
55
- headers: { before: beforeHeader, after: afterHeader, delta: deltaHeader },
56
- formatters: {
57
- x: { value: xValueFormatter, change: xChangeFormatter },
58
- y: { value: yValueFormatter, change: yChangeFormatter },
59
- }
60
- };
61
- // register the tooltip content provider function with the chart hook (useChart) so that
62
- // it is visible to all children of the Chart (i.e. the <Tooltip>).
63
- registerTooltipContentProvider(function (seriesName, time, series, mouseCoords) {
64
- return addTooltipContent(seriesName, time, series, mouseCoords, chartId, container, margin, plotDimensions, tooltipStyle, options_1);
65
- });
66
- }
67
- }, [
68
- chartId, container, margin, plotDimensions, registerTooltipContentProvider,
69
- xLabel, xChangeFormatter, xValueFormatter,
70
- yLabel, yChangeFormatter, yValueFormatter,
71
- beforeHeader, afterHeader, deltaHeader,
72
- tooltipStyle
73
- ]);
74
- return null;
75
- }
76
- /**
77
- * Callback function that adds tooltip content and returns the tooltip width and text height
78
- * @param seriesName The name of the series (i.e. the neuron ID)
79
- * @param time The time (x-coordinate value) corresponding to the mouse location
80
- * @param series The spike datum (t ms, s mV)
81
- * @param mouseCoords The coordinates of the mouse when the event was fired (relative to the plot container)
82
- * @param chartId The ID of this chart
83
- * @param container The plot container (SVGSVGElement)
84
- * @param margin The plot margins
85
- * @param tooltipStyle The style properties for the tooltip
86
- * @param plotDimensions The dimensions of the plot
87
- * @param options The options passed through the the function that adds the tooltip content
88
- * @return The width and text height of the tooltip content
89
- */
90
- function addTooltipContent(seriesName, time, series, mouseCoords, chartId, container, margin, plotDimensions, tooltipStyle, options) {
91
- var labels = options.labels, formatters = options.formatters;
92
- var x = mouseCoords[0], y = mouseCoords[1];
93
- var _a = boundingPoints(series, time), lower = _a[0], upper = _a[1];
94
- // display the neuron ID in the tooltip
95
- var header = d3.select(container)
96
- .append("text")
97
- .attr('id', "tn" + time + "-" + seriesName + "-" + chartId)
98
- .attr('class', 'tooltip')
99
- .attr('fill', tooltipStyle.fontColor)
100
- .attr('font-family', 'sans-serif')
101
- .attr('font-size', tooltipStyle.fontSize)
102
- .attr('font-weight', tooltipStyle.fontWeight)
103
- .text(function () { return seriesName; });
104
- // create the table that shows the points that come before and after the mouse time, and the
105
- // changes in the time and value
106
- var table = d3.select(container)
107
- .append("g")
108
- .attr('id', "t" + time + "-" + seriesName + "-header-" + chartId)
109
- .attr('class', 'tooltip')
110
- .attr('fill', tooltipStyle.fontColor)
111
- .attr('font-family', 'sans-serif')
112
- .attr('font-size', tooltipStyle.fontSize + 2)
113
- .attr('font-weight', tooltipStyle.fontWeight + 150);
114
- var headerRow = table.append('g').attr('font-weight', tooltipStyle.fontWeight + 550);
115
- var hrLower = headerRow.append("text").text(function () { return options.headers.before; });
116
- var hrUpper = headerRow.append("text").text(function () { return options.headers.after; });
117
- var hrDelta = headerRow.append("text").text(function () { return options.headers.delta; });
118
- var trHeader = table.append("text").text(function () { return labels.x; });
119
- var trLower = table.append("text").text(function () { return formatters.x.value(lower[0]); });
120
- var trUpper = table.append("text").text(function () { return formatters.x.value(upper[0]); });
121
- var trDelta = table.append("text").text(function () { return formatters.x.change(lower[0], upper[0]); });
122
- var vrHeader = table.append("text").text(function () { return labels.y; });
123
- var vrLower = table.append("text").text(function () { return formatters.y.value(lower[1]); });
124
- var vrUpper = table.append("text").text(function () { return formatters.y.value(upper[1]); });
125
- var vrDelta = table.append("text").text(function () { return formatters.y.change(lower[1], upper[1]); });
126
- var textWidthOf = function (elem) { var _a, _b; return ((_b = (_a = elem.node()) === null || _a === void 0 ? void 0 : _a.getBBox()) === null || _b === void 0 ? void 0 : _b.width) || 0; };
127
- var textHeightOf = function (elem) { var _a, _b; return ((_b = (_a = elem.node()) === null || _a === void 0 ? void 0 : _a.getBBox()) === null || _b === void 0 ? void 0 : _b.height) || 0; };
128
- var spacesWidthFor = function (spaces) { return spaces * textWidthOf(hrLower) / 5; };
129
- // calculate the max width and height of the text
130
- var tooltipWidth = Math.max(textWidthOf(header), spacesWidthFor(33));
131
- var headerTextHeight = textHeightOf(header);
132
- var headerRowHeight = textHeightOf(hrLower);
133
- var timeRowHeight = textHeightOf(trHeader);
134
- var valueRowHeight = textHeightOf(vrHeader);
135
- var textHeight = headerTextHeight + headerRowHeight + timeRowHeight + valueRowHeight;
136
- // set the header text location
137
- var xCoord = tooltipX(x, tooltipWidth, plotDimensions, tooltipStyle, margin);
138
- var yCoord = tooltipY(y, textHeight, plotDimensions, tooltipStyle, margin);
139
- var xTooltip = xCoord + tooltipStyle.paddingLeft;
140
- var yTooltip = yCoord + tooltipStyle.paddingTop;
141
- header
142
- .attr('x', function () { return xTooltip; })
143
- .attr('y', function () { return yTooltip - (headerRowHeight + timeRowHeight + valueRowHeight) + textHeight; });
144
- var hrRowY = yTooltip + headerTextHeight + headerRowHeight;
145
- var hrLowerX = spacesWidthFor(14);
146
- var hrUpperX = spacesWidthFor(24);
147
- var hrDeltaX = spacesWidthFor(32);
148
- hrLower.attr('x', function () { return xTooltip + hrLowerX - textWidthOf(hrLower); }).attr('y', function () { return hrRowY; });
149
- hrUpper.attr('x', function () { return xTooltip + hrUpperX - textWidthOf(hrUpper); }).attr('y', function () { return hrRowY; });
150
- hrDelta.attr('x', function () { return xTooltip + hrDeltaX - textWidthOf(hrDelta); }).attr('y', function () { return hrRowY; });
151
- var trRowY = hrRowY + timeRowHeight;
152
- trHeader.attr('x', function () { return xTooltip; }).attr('y', function () { return trRowY; });
153
- trLower.attr('x', function () { return xTooltip + hrLowerX - textWidthOf(trLower); }).attr('y', function () { return trRowY; });
154
- trUpper.attr('x', function () { return xTooltip + hrUpperX - textWidthOf(trUpper); }).attr('y', function () { return trRowY; });
155
- trDelta.attr('x', function () { return xTooltip + hrDeltaX - textWidthOf(trDelta); }).attr('y', function () { return trRowY; });
156
- var vrRowY = trRowY + valueRowHeight;
157
- vrHeader.attr('x', function () { return xTooltip; }).attr('y', function () { return vrRowY; });
158
- vrLower.attr('x', function () { return xTooltip + hrLowerX - textWidthOf(vrLower); }).attr('y', function () { return vrRowY; });
159
- vrUpper.attr('x', function () { return xTooltip + hrUpperX - textWidthOf(vrUpper); }).attr('y', function () { return vrRowY; });
160
- vrDelta.attr('x', function () { return xTooltip + hrDeltaX - textWidthOf(vrDelta); }).attr('y', function () { return vrRowY; });
161
- return { x: xCoord, y: yCoord, contentWidth: tooltipWidth, contentHeight: textHeight };
162
- }
163
- //# sourceMappingURL=ScatterPlotTooltipContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScatterPlotTooltipContent.js","sourceRoot":"","sources":["../../../../src/app/charts/ScatterPlotTooltipContent.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../src/app/charts/Tooltip.tsx"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { useChart } from "./hooks/useChart";
13
- import { defaultTrackerLabelFont, defaultTrackerStyle, removeTrackerControl, trackerControlInstance } from "./trackerUtils";
14
- import * as d3 from "d3";
15
- import { useEffect, useMemo, useRef } from "react";
16
- import { noop } from "./utils";
17
- export var TrackerLabelLocation;
18
- (function (TrackerLabelLocation) {
19
- TrackerLabelLocation[TrackerLabelLocation["Nowhere"] = 0] = "Nowhere";
20
- TrackerLabelLocation[TrackerLabelLocation["WithMouse"] = 1] = "WithMouse";
21
- TrackerLabelLocation[TrackerLabelLocation["ByAxes"] = 2] = "ByAxes";
22
- })(TrackerLabelLocation || (TrackerLabelLocation = {}));
23
- /**
24
- * A tracker line that displays or reports the time at the mouse location. The tracker
25
- * handles single axes and dual axes.
26
- * @param props The tracker control properties
27
- * @return null component
28
- * @constructor
29
- */
30
- export function Tracker(props) {
31
- var visible = props.visible, _a = props.labelLocation, labelLocation = _a === void 0 ? TrackerLabelLocation.WithMouse : _a, style = props.style, font = props.font, _b = props.onTrackerUpdate, onTrackerUpdate = _b === void 0 ? noop : _b;
32
- var _c = useChart(), chartId = _c.chartId, container = _c.container, plotDimensions = _c.plotDimensions, margin = _c.margin, xAxesState = _c.xAxesState;
33
- var trackerStyle = useMemo(function () { return (__assign(__assign({}, defaultTrackerStyle), style)); }, [style]);
34
- var trackerFont = useMemo(function () { return (__assign(__assign({}, defaultTrackerLabelFont), font)); }, [font]);
35
- var trackerRef = useRef();
36
- var xAxisRef = useRef(new Map());
37
- useEffect(function () {
38
- var axes = new Map();
39
- xAxesState.axes.forEach(function (axis, id) { return axes.set(id, axis); });
40
- xAxisRef.current = axes;
41
- }, [xAxesState]);
42
- // when the container, tracker-control function, or visibility change, then we need to update the
43
- // tracker control
44
- useEffect(function () {
45
- if (container) {
46
- var svg = d3.select(container);
47
- if (visible && container) {
48
- var trackerLabels = new Map(Array.from(xAxisRef.current.values()).map(function (axis) { return [
49
- axis,
50
- function (x) { return labelLocation === TrackerLabelLocation.Nowhere ?
51
- '' :
52
- d3.format(",.0f")(axis.scale.invert(x - margin.left)) + " ms"; }
53
- ]; }));
54
- trackerRef.current = trackerControlInstance(chartId, container, svg, plotDimensions, margin, trackerStyle, trackerFont, trackerLabels, labelLocation, onTrackerUpdate);
55
- }
56
- // if the tracker was defined, and is now no longer defined (i.e. props changed, then remove the tracker)
57
- else if (!visible && trackerRef.current !== undefined) {
58
- removeTrackerControl(svg);
59
- trackerRef.current = undefined;
60
- }
61
- }
62
- }, [chartId, container, labelLocation, margin, onTrackerUpdate, plotDimensions, trackerFont, trackerStyle, visible]);
63
- return null;
64
- }
65
- //# sourceMappingURL=Tracker.js.map