stream-charts 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/README.md +757 -342
  2. package/changes.md +11 -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
@@ -0,0 +1,50 @@
1
+ import { emptySeries, seriesFrom } from "./baseSeries";
2
+ describe('should be able to create an empty series', () => {
3
+ test('an empty series should be empty', () => {
4
+ expect(emptySeries('test1').isEmpty());
5
+ });
6
+ test('an empty series should not have a last element', () => {
7
+ expect(emptySeries('test1').last().failed);
8
+ });
9
+ test('an empty series should have 0 length', () => {
10
+ expect(emptySeries('test1').length()).toBe(0);
11
+ });
12
+ test('an empty series should not have any data', () => {
13
+ expect(emptySeries('test1').data.length).toBe(0);
14
+ });
15
+ test('an empty series should have the specified name', () => {
16
+ expect(emptySeries('test1').name).toBe('test1');
17
+ });
18
+ });
19
+ describe('should be able to create a series from data', () => {
20
+ const data = [
21
+ { time: 1, value: 10 },
22
+ { time: 2, value: 20 },
23
+ { time: 3, value: 30 },
24
+ { time: 4, value: 40 },
25
+ { time: 5, value: 50 },
26
+ { time: 6, value: 60 },
27
+ { time: 7, value: 70 },
28
+ { time: 8, value: 80 },
29
+ { time: 9, value: 90 },
30
+ { time: 10, value: 100 },
31
+ ];
32
+ const series = seriesFrom('test2', data);
33
+ test('series should not be empty', () => {
34
+ expect(!series.isEmpty());
35
+ });
36
+ test('series name should be test2', () => {
37
+ expect(series.name).toEqual('test2');
38
+ });
39
+ test('series should have 10 points', () => {
40
+ expect(series.length()).toBe(10);
41
+ });
42
+ test('last value in series should be (10, 100)', () => {
43
+ const lastElement = series.last().getOrElse({ time: NaN, value: NaN });
44
+ expect(lastElement).toEqual({ time: 10, value: 100 });
45
+ });
46
+ test('series data should equal original data', () => {
47
+ expect(series.data).toEqual(data);
48
+ });
49
+ });
50
+ //# sourceMappingURL=datumSeries.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datumSeries.test.js","sourceRoot":"","sources":["../../../../../src/app/charts/series/datumSeries.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { BaseSeries } from "./baseSeries";
2
+ /**
3
+ * An immutable datum object that holds the iterate `(f[n](x), f[n+1](x))` with an
4
+ * informational time
5
+ */
6
+ export interface IterateDatum {
7
+ readonly time: number;
8
+ readonly iterateN: number;
9
+ readonly iterateN_1: number;
10
+ }
11
+ /**
12
+ * Creates an empty iterate datum
13
+ */
14
+ export declare const emptyIterateDatum: IterateDatum;
15
+ /**
16
+ * Creates an iterate datum
17
+ * @param time The informational time
18
+ * @param iterateN The n-th iterate (i.e. `f[n](x)`)
19
+ * @param iterateN_1 The (n+1)-th iterate (i.e. `f[n+1](x)`)
20
+ * @return An iterate datum
21
+ */
22
+ export declare const iterateDatumOf: (time: number, iterateN: number, iterateN_1: number) => IterateDatum;
23
+ /**
24
+ * Returns whether the iterate datum is considered empty. An iterate datum is considered
25
+ * empty when the time, `f[n](x)`, `f[n+1](x)` values are all `NaN`
26
+ * @param datum The iterate datum to test
27
+ * @return `true` if the iterate datum is empty; `false` otherwise
28
+ */
29
+ export declare const nonEmptyIterateDatum: (datum: IterateDatum) => boolean;
30
+ /**
31
+ * A series of iterate (i.e. `(f[n](x), f[n+1](x))` pairs)
32
+ */
33
+ export type IterateSeries = BaseSeries<IterateDatum>;
34
+ /**
35
+ * Creates a series from the name and the optional array of (x, y) pairs (tuples)
36
+ * @param name The name of the series
37
+ * @param data The optional array of (x, y) pairs (tuples)
38
+ * @return A `Series` for object that can be used by the `PoincarePlot`
39
+ * @see seriesFrom
40
+ * @see emptySeries
41
+ */
42
+ export declare const iterateSeriesFromTuples: (name: string, data?: Array<[number, number, number]>) => IterateSeries;
@@ -0,0 +1,34 @@
1
+ import { seriesFrom } from "./baseSeries";
2
+ /**
3
+ * Creates an empty iterate datum
4
+ */
5
+ export const emptyIterateDatum = { time: NaN, iterateN: NaN, iterateN_1: NaN };
6
+ /**
7
+ * Creates an iterate datum
8
+ * @param time The informational time
9
+ * @param iterateN The n-th iterate (i.e. `f[n](x)`)
10
+ * @param iterateN_1 The (n+1)-th iterate (i.e. `f[n+1](x)`)
11
+ * @return An iterate datum
12
+ */
13
+ export const iterateDatumOf = (time, iterateN, iterateN_1) => ({
14
+ time,
15
+ iterateN,
16
+ iterateN_1
17
+ });
18
+ /**
19
+ * Returns whether the iterate datum is considered empty. An iterate datum is considered
20
+ * empty when the time, `f[n](x)`, `f[n+1](x)` values are all `NaN`
21
+ * @param datum The iterate datum to test
22
+ * @return `true` if the iterate datum is empty; `false` otherwise
23
+ */
24
+ export const nonEmptyIterateDatum = (datum) => !isNaN(datum.time) && !isNaN(datum.iterateN) && !isNaN(datum.iterateN_1);
25
+ /**
26
+ * Creates a series from the name and the optional array of (x, y) pairs (tuples)
27
+ * @param name The name of the series
28
+ * @param data The optional array of (x, y) pairs (tuples)
29
+ * @return A `Series` for object that can be used by the `PoincarePlot`
30
+ * @see seriesFrom
31
+ * @see emptySeries
32
+ */
33
+ export const iterateSeriesFromTuples = (name, data = []) => seriesFrom(name, data.map(([t, fn, fn_1]) => iterateDatumOf(t, fn, fn_1)));
34
+ //# sourceMappingURL=iterateSeries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterateSeries.js","sourceRoot":"","sources":["../../../../../src/app/charts/series/iterateSeries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAC,MAAM,cAAc,CAAC;AAYpD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAC,CAAA;AAE1F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,UAAkB,EAAgB,EAAE,CAAC,CAAC;IACjG,IAAI;IACJ,QAAQ;IACR,UAAU;CACb,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAmB,EAAW,EAAE,CACjE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAO5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,OAAwC,EAAE,EAAiB,EAAE,CAC/G,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { BaseSeries } from "./baseSeries";
2
+ import { OrdinalChartData, OrdinalStats } from "../observables/ordinals";
3
+ /**
4
+ * An immutable datum object for series with a category and value.
5
+ * This could be a series of (ordinal, value) where the category runs
6
+ * along the x-axis. Or, it could be a series of (value, ordinal) where
7
+ * the categories run along the y-axis.
8
+ */
9
+ export interface OrdinalDatum {
10
+ readonly time: number;
11
+ readonly ordinal: string;
12
+ readonly value: number;
13
+ }
14
+ /**
15
+ * Creates an empty ordinal datum
16
+ */
17
+ export declare const emptyOrdinalDatum: OrdinalDatum;
18
+ export declare const copyOrdinalDatum: (datum: OrdinalDatum) => OrdinalDatum;
19
+ /**
20
+ * Creates an iterate datum
21
+ * @param time The datum time, which is mostly informational
22
+ * @param ordinal The category name or identifier
23
+ * @param value The value
24
+ * @return An iterate datum
25
+ */
26
+ export declare const ordinalDatumOf: (time: number, ordinal: string, value: number) => OrdinalDatum;
27
+ /**
28
+ * Returns whether the ordinal datum is empty. An ordinal datum is considered empty
29
+ * when the time is NaN, the ordinal is blank (empty or only whitespace), and the value
30
+ * is NaN.
31
+ * @param datum The iterate datum to test
32
+ * @return `true` if the iterate datum is empty; `false` otherwise
33
+ */
34
+ export declare const nonEmptyOrdinalDatum: (datum: OrdinalDatum) => boolean;
35
+ /**
36
+ * A series of ordinal datum
37
+ */
38
+ export type OrdinalSeries = BaseSeries<OrdinalDatum>;
39
+ /**
40
+ * Creates a series from the name and the optional array of (time, ordinal, value) tuples
41
+ * @param name The name of the series
42
+ * @param data The optional array of (time, ordinal, value) tuples
43
+ * @return An {@link OrdinalSeries} for charts where one axis is the category, and the other a value
44
+ * @see seriesFrom
45
+ * @see emptySeries
46
+ */
47
+ export declare function ordinateSeriesFromTuples(name: string, data?: Array<[time: number, ordinal: string, value: number]>): OrdinalSeries;
48
+ /**
49
+ * Creates an empty chart data object with all the values set to 0
50
+ * @param seriesList The list of series names (identifiers) to update
51
+ * @return An empty chart data object
52
+ */
53
+ export declare function initialOrdinalChartData(seriesList: Array<OrdinalSeries>): OrdinalChartData;
54
+ export declare function calculateOrdinalStats(seriesList: Array<OrdinalSeries>): OrdinalStats;
@@ -0,0 +1,98 @@
1
+ import { seriesFrom } from "./baseSeries";
2
+ import { initialMaxTimeDatum, initialMaxValueDatum, initialMinTimeDatum, initialMinValueDatum } from "../observables/ordinals";
3
+ /**
4
+ * Creates an empty ordinal datum
5
+ */
6
+ export const emptyOrdinalDatum = {
7
+ time: NaN,
8
+ ordinal: "",
9
+ value: NaN,
10
+ };
11
+ export const copyOrdinalDatum = (datum) => ({
12
+ time: datum.time,
13
+ ordinal: datum.ordinal,
14
+ value: datum.value,
15
+ });
16
+ /**
17
+ * Creates an iterate datum
18
+ * @param time The datum time, which is mostly informational
19
+ * @param ordinal The category name or identifier
20
+ * @param value The value
21
+ * @return An iterate datum
22
+ */
23
+ export const ordinalDatumOf = (time, ordinal, value) => ({
24
+ time,
25
+ ordinal,
26
+ value,
27
+ });
28
+ /**
29
+ * Returns whether the ordinal datum is empty. An ordinal datum is considered empty
30
+ * when the time is NaN, the ordinal is blank (empty or only whitespace), and the value
31
+ * is NaN.
32
+ * @param datum The iterate datum to test
33
+ * @return `true` if the iterate datum is empty; `false` otherwise
34
+ */
35
+ export const nonEmptyOrdinalDatum = (datum) => !isNaN(datum.time) && datum.ordinal.replace(/\s/g, "").length > 0 && !isNaN(datum.value);
36
+ /**
37
+ * Creates a series from the name and the optional array of (time, ordinal, value) tuples
38
+ * @param name The name of the series
39
+ * @param data The optional array of (time, ordinal, value) tuples
40
+ * @return An {@link OrdinalSeries} for charts where one axis is the category, and the other a value
41
+ * @see seriesFrom
42
+ * @see emptySeries
43
+ */
44
+ export function ordinateSeriesFromTuples(name, data = []) {
45
+ return seriesFrom(name, data.map(([t, ordinal, value]) => ordinalDatumOf(t, ordinal, value)));
46
+ }
47
+ /**
48
+ * Creates an empty chart data object with all the values set to 0
49
+ * @param seriesList The list of series names (identifiers) to update
50
+ * @return An empty chart data object
51
+ */
52
+ export function initialOrdinalChartData(seriesList) {
53
+ return {
54
+ seriesNames: new Set(seriesList.map(series => series.name)),
55
+ stats: calculateOrdinalStats(seriesList),
56
+ newPoints: new Map(seriesList.map(series => [
57
+ series.name,
58
+ series.data.map(datum => ({
59
+ time: datum.time,
60
+ ordinal: datum.ordinal,
61
+ value: datum.value,
62
+ }))
63
+ ]))
64
+ };
65
+ }
66
+ export function calculateOrdinalStats(seriesList) {
67
+ const ordinalValueStats = new Map(seriesList.map((series) => {
68
+ const seriesMin = series.data.reduce((min, datum) => datum.value < min.value ? datum : min, initialMinValueDatum());
69
+ const seriesMax = series.data.reduce((max, datum) => datum.value > max.value ? datum : max, initialMaxValueDatum());
70
+ const seriesSum = series.data.reduce((sum, datum) => sum + datum.value, 0);
71
+ const seriesSumSquared = series.data.reduce((sumSquared, datum) => sumSquared + datum.value * datum.value, 0);
72
+ const seriesMean = series.data.length > 0 ? seriesSum / series.data.length : NaN;
73
+ return [series.name, {
74
+ max: seriesMax,
75
+ min: seriesMin,
76
+ count: series.data.length,
77
+ sum: seriesSum,
78
+ sumSquared: seriesSumSquared,
79
+ mean: seriesMean,
80
+ }];
81
+ }));
82
+ const minValueDatum = Array.from(ordinalValueStats.values()).reduce((min, value) => value.min.value < min.value ? value.min : min, initialMinValueDatum());
83
+ const maxValueDatum = Array.from(ordinalValueStats.values()).reduce((max, value) => value.max.value > max.value ? value.max : max, initialMaxValueDatum());
84
+ const minTimeDatum = seriesList.reduce((globalMin, series) => {
85
+ const seriesMin = series.data.reduce((min, datum) => datum.value < min.value ? datum : min, globalMin);
86
+ return seriesMin.value < globalMin.value ? seriesMin : globalMin;
87
+ }, initialMinTimeDatum());
88
+ const maxTimeDatum = seriesList.reduce((globalMax, series) => {
89
+ const seriesMax = series.data.reduce((max, datum) => datum.value > max.value ? datum : max, globalMax);
90
+ return seriesMax.value > globalMax.value ? seriesMax : globalMax;
91
+ }, initialMaxTimeDatum());
92
+ return {
93
+ maxDatum: { time: maxTimeDatum, value: maxValueDatum },
94
+ minDatum: { time: minTimeDatum, value: minValueDatum },
95
+ valueStatsForSeries: ordinalValueStats
96
+ };
97
+ }
98
+ //# sourceMappingURL=ordinalSeries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordinalSeries.js","sourceRoot":"","sources":["../../../../../src/app/charts/series/ordinalSeries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { BaseSeries } from "./baseSeries";
2
+ /**
3
+ * An immutable datum object that holds the spike (time, value) representing a neuron spike
4
+ */
5
+ export interface Datum {
6
+ readonly time: number;
7
+ readonly value: number;
8
+ }
9
+ /**
10
+ * Creates a datum from a (time, value) pair
11
+ * @param time The time
12
+ * @param value The value
13
+ * @return A {@link Datum} instance with the specified (time, value)
14
+ */
15
+ export declare const datumOf: (time: number, value: number) => Datum;
16
+ export declare const emptyDatum: () => Datum;
17
+ export type TimeSeries = BaseSeries<Datum>;
18
+ /**
19
+ * Creates a series from the name and the optional array of (x, y) pairs (tuples)
20
+ * @param name The name of the series
21
+ * @param data The optional array of (x, y) pairs (tuples)
22
+ * @return A `Series` for object that can be used by the `RasterChart`
23
+ * @see seriesFrom
24
+ * @see emptySeries
25
+ */
26
+ export declare const timeSeriesFromTuples: (name: string, data?: Array<[number, number]>) => TimeSeries;
27
+ export interface PixelDatum extends Datum {
28
+ x: number;
29
+ y: number;
30
+ }
@@ -0,0 +1,19 @@
1
+ import { seriesFrom } from "./baseSeries";
2
+ /**
3
+ * Creates a datum from a (time, value) pair
4
+ * @param time The time
5
+ * @param value The value
6
+ * @return A {@link Datum} instance with the specified (time, value)
7
+ */
8
+ export const datumOf = (time, value) => ({ time, value });
9
+ export const emptyDatum = () => ({ time: NaN, value: NaN });
10
+ /**
11
+ * Creates a series from the name and the optional array of (x, y) pairs (tuples)
12
+ * @param name The name of the series
13
+ * @param data The optional array of (x, y) pairs (tuples)
14
+ * @return A `Series` for object that can be used by the `RasterChart`
15
+ * @see seriesFrom
16
+ * @see emptySeries
17
+ */
18
+ export const timeSeriesFromTuples = (name, data = []) => seriesFrom(name, data.map(([t, y]) => datumOf(t, y)));
19
+ //# sourceMappingURL=timeSeries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeSeries.js","sourceRoot":"","sources":["../../../../../src/app/charts/series/timeSeries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAC,MAAM,cAAc,CAAC;AAUpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,GAAU,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAA;AAKhE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,OAAgC,EAAE,EAAc,EAAE,CACjG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -1,8 +1,9 @@
1
- import { Datum, Series } from "./datumSeries";
1
+ import { Datum, TimeSeries } from "./timeSeries";
2
+ import { ChartData } from "../observables/ChartData";
2
3
  /**
3
- * The spike-chart data produced by the rxjs observable that is pushed to the `RasterChart`
4
+ * The spike-chart data produced by the rxjs observable that is pushed to a streaming chart
4
5
  */
5
- export interface ChartData {
6
+ export interface TimeSeriesChartData extends ChartData {
6
7
  /**
7
8
  * The max (latest) time for the data in the newPoints map
8
9
  */
@@ -16,17 +17,21 @@ export interface ChartData {
16
17
  * data points for that time-series (`map(series_name -> array(datum))`)
17
18
  */
18
19
  newPoints: Map<string, Array<Datum>>;
20
+ /**
21
+ * The current time (for example, when used with cadence)
22
+ */
19
23
  currentTime?: number;
20
24
  }
21
25
  /**
22
26
  * Creates an empty chart data object with all the values set to 0
23
27
  * @param {Array<string>} series The list of series names (identifiers) to update
24
- * @return {ChartData} An empty chart data object
28
+ * @return {TimeSeriesChartData} An empty chart data object
25
29
  */
26
- export declare function emptyChartData(series: Array<string>): ChartData;
30
+ export declare function emptyTimeSeriesChartData(series: Array<string>): TimeSeriesChartData;
27
31
  /**
28
32
  * Creates an empty chart data object with all the values set to 0
29
33
  * @param seriesList The list of series names (identifiers) to update
34
+ * @param [currentTime=0] The current time
30
35
  * @return An empty chart data object
31
36
  */
32
- export declare function initialChartData(seriesList: Array<Series>): ChartData;
37
+ export declare function initialTimeSeriesChartData(seriesList: Array<TimeSeries>, currentTime?: number): TimeSeriesChartData;
@@ -0,0 +1,32 @@
1
+ import { defaultChartData } from "../observables/ChartData";
2
+ /**
3
+ * Creates an empty chart data object with all the values set to 0
4
+ * @param {Array<string>} series The list of series names (identifiers) to update
5
+ * @return {TimeSeriesChartData} An empty chart data object
6
+ */
7
+ export function emptyTimeSeriesChartData(series) {
8
+ return Object.assign(Object.assign({}, defaultChartData()), { maxTime: 0, maxTimes: new Map(series.map(name => [name, 0])), newPoints: new Map(series.map(name => [name, [{ time: 0, value: 0 }]])) });
9
+ }
10
+ /**
11
+ * Creates an empty chart data object with all the values set to 0
12
+ * @param seriesList The list of series names (identifiers) to update
13
+ * @param [currentTime=0] The current time
14
+ * @return An empty chart data object
15
+ */
16
+ export function initialTimeSeriesChartData(seriesList, currentTime = 0) {
17
+ const maxTime = seriesList.reduce((tMax, series) => Math.max(tMax, series.last().map(datum => datum.time).getOrElse(-Infinity)), -Infinity);
18
+ return {
19
+ seriesNames: new Set(seriesList.map(series => series.name)),
20
+ maxTime,
21
+ maxTimes: new Map(seriesList.map(series => [series.name, series.last().map(datum => datum.time).getOrElse(0)])),
22
+ newPoints: new Map(seriesList.map(series => [
23
+ series.name,
24
+ [{
25
+ time: series.last().map(datum => datum.time).getOrElse(0),
26
+ value: series.last().map(datum => datum.value).getOrElse(0)
27
+ }]
28
+ ])),
29
+ currentTime: currentTime
30
+ };
31
+ }
32
+ //# sourceMappingURL=timeSeriesChartData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeSeriesChartData.js","sourceRoot":"","sources":["../../../../../src/app/charts/series/timeSeriesChartData.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AA4BrE;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC1D,uCACO,gBAAgB,EAAE,KACrB,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS,EAAE,IAAI,GAAG,CAAuB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,IAC9F;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAA6B,EAAE,cAAsB,CAAC;IAC7F,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC7F,CAAC,QAAQ,CACZ,CAAA;IACD,OAAO;QACH,WAAW,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO;QACP,QAAQ,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,SAAS,EAAE,IAAI,GAAG,CAAuB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI;YACX,CAAC;oBACG,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACzD,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC9D,CAAC;SACL,CAAC,CAAC;QACH,WAAW,EAAE,WAAW;KAC3B,CAAA;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { SeriesStyle } from "../axes/axes";
2
+ import { SvgFillStyle, SvgStrokeStyle } from "./svgStyle";
3
+ export interface BarSeriesStyle extends SeriesStyle {
4
+ /**
5
+ * The bar style for the lifetime min/max range bar. The style is for the width, fill,
6
+ * and stroke.
7
+ */
8
+ minMaxBar: BarStyle;
9
+ /**
10
+ * The bar style for the windowed min/max range bar. The style is for the width, fill,
11
+ * and stroke.
12
+ */
13
+ windowedMinMaxBar: BarStyle;
14
+ /**
15
+ * The line style for the current value.
16
+ */
17
+ valueLine: LineStyle;
18
+ /**
19
+ * The line style for the mean value.
20
+ */
21
+ meanValueLine: LineStyle;
22
+ /**
23
+ * The line style for the windowed-mean value.
24
+ */
25
+ windowedMeanValueLine: LineStyle;
26
+ }
27
+ export interface BarStyle {
28
+ widthFraction: number;
29
+ fill: SvgFillStyle;
30
+ stroke: SvgStrokeStyle;
31
+ }
32
+ export interface LineStyle {
33
+ regular: SvgStrokeStyle;
34
+ highlight: SvgStrokeStyle;
35
+ }
36
+ export declare function defaultMinMaxBarStyle(color?: string): BarStyle;
37
+ export declare function defaultWindowedMinMaxBarStyle(color?: string): BarStyle;
38
+ export declare function defaultValueLineStyle(color?: string): LineStyle;
39
+ export declare function defaultMeanValueLineStyle(color?: string): LineStyle;
40
+ export declare function defaultWindowedMeanValueLineStyle(color?: string): LineStyle;
41
+ export declare function defaultBarSeriesStyle(color?: string): BarSeriesStyle;
@@ -0,0 +1,84 @@
1
+ import * as d3 from "d3";
2
+ export function defaultMinMaxBarStyle(color = "#008aad") {
3
+ return {
4
+ widthFraction: 0.65,
5
+ fill: {
6
+ color,
7
+ opacity: 0.4
8
+ },
9
+ stroke: {
10
+ width: 1,
11
+ opacity: 0.6,
12
+ color,
13
+ }
14
+ };
15
+ }
16
+ export function defaultWindowedMinMaxBarStyle(color = "#008aad") {
17
+ var _a, _b, _c, _d;
18
+ return {
19
+ widthFraction: 0.25,
20
+ fill: {
21
+ color: (_b = (_a = d3.color(color)) === null || _a === void 0 ? void 0 : _a.darker(0.3).toString()) !== null && _b !== void 0 ? _b : color,
22
+ opacity: 0.6
23
+ },
24
+ stroke: {
25
+ width: 0,
26
+ opacity: 0,
27
+ color: (_d = (_c = d3.color(color)) === null || _c === void 0 ? void 0 : _c.darker(0.3).toString()) !== null && _d !== void 0 ? _d : color,
28
+ }
29
+ };
30
+ }
31
+ export function defaultValueLineStyle(color = "#008aad") {
32
+ return {
33
+ regular: {
34
+ color,
35
+ opacity: 0.6,
36
+ width: 3
37
+ },
38
+ highlight: {
39
+ color,
40
+ opacity: 1,
41
+ width: 5
42
+ }
43
+ };
44
+ }
45
+ export function defaultMeanValueLineStyle(color = "#008aad") {
46
+ return {
47
+ regular: {
48
+ color,
49
+ opacity: 0.6,
50
+ width: 1
51
+ },
52
+ highlight: {
53
+ color,
54
+ opacity: 1,
55
+ width: 3
56
+ }
57
+ };
58
+ }
59
+ export function defaultWindowedMeanValueLineStyle(color = "#008aad") {
60
+ return {
61
+ regular: {
62
+ color: 'red',
63
+ opacity: 0.6,
64
+ width: 1
65
+ },
66
+ highlight: {
67
+ color: 'red',
68
+ opacity: 1,
69
+ width: 3
70
+ }
71
+ };
72
+ }
73
+ export function defaultBarSeriesStyle(color = "#008aad") {
74
+ return {
75
+ color,
76
+ highlightColor: color,
77
+ minMaxBar: defaultMinMaxBarStyle(color),
78
+ windowedMinMaxBar: defaultWindowedMinMaxBarStyle(color),
79
+ valueLine: defaultValueLineStyle(color),
80
+ meanValueLine: defaultMeanValueLineStyle(color),
81
+ windowedMeanValueLine: defaultWindowedMeanValueLineStyle(color),
82
+ };
83
+ }
84
+ //# sourceMappingURL=barPlotStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barPlotStyle.js","sourceRoot":"","sources":["../../../../../src/app/charts/styling/barPlotStyle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAsCzB,MAAM,UAAU,qBAAqB,CAAC,QAAgB,SAAS;IAC3D,OAAO;QACH,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE;YACF,KAAK;YACL,OAAO,EAAE,GAAG;SACf;QACD,MAAM,EAAE;YACJ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,GAAG;YACZ,KAAK;SACR;KACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAgB,SAAS;;IACnE,OAAO;QACH,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE;YACF,KAAK,EAAE,MAAA,MAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,mCAAI,KAAK;YACvD,OAAO,EAAE,GAAG;SACf;QACD,MAAM,EAAE;YACJ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,MAAA,MAAA,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,mCAAI,KAAK;SAC1D;KACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB,SAAS;IAC3D,OAAO;QACH,OAAO,EAAE;YACL,KAAK;YACL,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,CAAC;SACX;QACD,SAAS,EAAE;YACP,KAAK;YACL,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;SACX;KACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB,SAAS;IAC/D,OAAO;QACH,OAAO,EAAE;YACL,KAAK;YACL,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,CAAC;SACX;QACD,SAAS,EAAE;YACP,KAAK;YACL,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;SACX;KACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAAgB,SAAS;IACvE,OAAO;QACH,OAAO,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,CAAC;SACX;QACD,SAAS,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;SACX;KACJ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB,SAAS;IAC3D,OAAO;QACH,KAAK;QACL,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC;QACvC,iBAAiB,EAAE,6BAA6B,CAAC,KAAK,CAAC;QACvD,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC;QACvC,aAAa,EAAE,yBAAyB,CAAC,KAAK,CAAC;QAC/C,qBAAqB,EAAE,iCAAiC,CAAC,KAAK,CAAC;KAClE,CAAA;AACL,CAAC"}
@@ -9,12 +9,12 @@ export interface Margin {
9
9
  }
10
10
  export declare function noMargins(): Margin;
11
11
  export interface Dimensions {
12
- width: number;
13
- height: number;
12
+ readonly width: number;
13
+ readonly height: number;
14
14
  }
15
15
  /**
16
16
  * Given the dimensions of the plot (width, height) based on the container's width and height,
17
- * and the plots margins. Calculates the dimensions of the actual plot by subtracting the margins.
17
+ * and the plot's margins. Calculates the dimensions of the actual plot by subtracting the margins.
18
18
  * @param containerWidth The overall width of the container (plot and margins)
19
19
  * @param containerHeight The overall height of the container (plot and margins)
20
20
  * @param plotMargins The margins around the plot (top, bottom, left, right)
@@ -22,7 +22,7 @@ export interface Dimensions {
22
22
  * from the overall dimensions
23
23
  * @see containerDimensionsFrom
24
24
  */
25
- export declare const plotDimensionsFrom: (containerWidth: number, containerHeight: number, plotMargins: Margin) => Dimensions;
25
+ export declare function plotDimensionsFrom(containerWidth: number, containerHeight: number, plotMargins: Margin): Dimensions;
26
26
  /**
27
27
  * Calculates the container's dimensions from the plot dimensions and the plot margin. The container
28
28
  * dimensions are the plot dimensions plus the margins.
@@ -31,4 +31,6 @@ export declare const plotDimensionsFrom: (containerWidth: number, containerHeigh
31
31
  * @return The container dimensions.
32
32
  * @see plotDimensionsFrom
33
33
  */
34
- export declare const containerDimensionsFrom: (plotDimensions: Dimensions, plotMargin: Margin) => Dimensions;
34
+ export declare function containerDimensionsFrom(plotDimensions: Dimensions, plotMargin: Margin): Dimensions;
35
+ export declare function dimensionsEqual(dimension1: Dimensions, dimension2: Dimensions): boolean;
36
+ export declare function dimensionsNotEqual(dimension1: Dimensions, dimension2: Dimensions): boolean;
@@ -3,7 +3,7 @@ export function noMargins() {
3
3
  }
4
4
  /**
5
5
  * Given the dimensions of the plot (width, height) based on the container's width and height,
6
- * and the plots margins. Calculates the dimensions of the actual plot by subtracting the margins.
6
+ * and the plot's margins. Calculates the dimensions of the actual plot by subtracting the margins.
7
7
  * @param containerWidth The overall width of the container (plot and margins)
8
8
  * @param containerHeight The overall height of the container (plot and margins)
9
9
  * @param plotMargins The margins around the plot (top, bottom, left, right)
@@ -11,10 +11,12 @@ export function noMargins() {
11
11
  * from the overall dimensions
12
12
  * @see containerDimensionsFrom
13
13
  */
14
- export var plotDimensionsFrom = function (containerWidth, containerHeight, plotMargins) { return ({
15
- width: containerWidth - plotMargins.left - plotMargins.right,
16
- height: containerHeight - plotMargins.top - plotMargins.bottom
17
- }); };
14
+ export function plotDimensionsFrom(containerWidth, containerHeight, plotMargins) {
15
+ return {
16
+ width: containerWidth - plotMargins.left - plotMargins.right,
17
+ height: containerHeight - plotMargins.top - plotMargins.bottom
18
+ };
19
+ }
18
20
  /**
19
21
  * Calculates the container's dimensions from the plot dimensions and the plot margin. The container
20
22
  * dimensions are the plot dimensions plus the margins.
@@ -23,8 +25,16 @@ export var plotDimensionsFrom = function (containerWidth, containerHeight, plotM
23
25
  * @return The container dimensions.
24
26
  * @see plotDimensionsFrom
25
27
  */
26
- export var containerDimensionsFrom = function (plotDimensions, plotMargin) { return ({
27
- width: plotDimensions.width + plotMargin.left + plotMargin.right,
28
- height: plotDimensions.height + plotMargin.top + plotMargin.bottom
29
- }); };
28
+ export function containerDimensionsFrom(plotDimensions, plotMargin) {
29
+ return {
30
+ width: plotDimensions.width + plotMargin.left + plotMargin.right,
31
+ height: plotDimensions.height + plotMargin.top + plotMargin.bottom
32
+ };
33
+ }
34
+ export function dimensionsEqual(dimension1, dimension2) {
35
+ return dimension1.height === dimension2.height && dimension1.width === dimension2.width;
36
+ }
37
+ export function dimensionsNotEqual(dimension1, dimension2) {
38
+ return !dimensionsEqual(dimension1, dimension2);
39
+ }
30
40
  //# sourceMappingURL=margins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"margins.js","sourceRoot":"","sources":["../../../../../src/app/charts/styling/margins.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,SAAS;IACrB,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAC,CAAA;AACjD,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAsB,EAAE,eAAuB,EAAE,WAAmB;IACnG,OAAO;QACH,KAAK,EAAE,cAAc,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK;QAC5D,MAAM,EAAE,eAAe,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM;KACjE,CAAA;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,cAA0B,EAAE,UAAkB;IAClF,OAAO;QACH,KAAK,EAAE,cAAc,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK;QAChE,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM;KACrE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAsB,EAAE,UAAsB;IAC1E,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAsB,EAAE,UAAsB;IAC7E,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AACnD,CAAC"}