@orbcharts/core 3.0.7 → 4.0.0-pre-alpha.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 (196) hide show
  1. package/dist/orbcharts-core.es.js +2795 -6591
  2. package/dist/orbcharts-core.umd.js +6 -6
  3. package/dist/src/OrbCharts.d.ts +18 -0
  4. package/dist/src/chart/createChart.d.ts +3 -0
  5. package/dist/src/chart/createGraphData.d.ts +3 -0
  6. package/dist/src/chart/createGridData.d.ts +3 -0
  7. package/dist/src/chart/createMultivariateData.d.ts +3 -0
  8. package/dist/src/chart/createSeriesData.d.ts +3 -0
  9. package/dist/src/chart/createTreeData.d.ts +3 -0
  10. package/dist/src/chart/defaults.d.ts +5 -0
  11. package/dist/src/defineCanvasLayer.d.ts +16 -0
  12. package/dist/src/defineCanvasPlugin.d.ts +22 -0
  13. package/dist/src/defineSVGLayer.d.ts +16 -0
  14. package/dist/src/defineSVGPlugin.d.ts +22 -0
  15. package/dist/src/index.d.ts +6 -14
  16. package/dist/src/layer/createLayer.d.ts +3 -0
  17. package/dist/src/plugin/createPlugin.d.ts +3 -0
  18. package/dist/src/test/createGraphData.test.d.ts +1 -0
  19. package/dist/src/test/createTreeData.test.d.ts +1 -0
  20. package/dist/src/test/simple-graph-test.d.ts +74 -0
  21. package/dist/src/test/simple-tree-test.d.ts +13 -0
  22. package/dist/src/types/Chart.d.ts +39 -0
  23. package/dist/src/types/ChartContext.d.ts +27 -0
  24. package/dist/src/types/Common.d.ts +3 -0
  25. package/dist/src/types/Encoding.d.ts +33 -0
  26. package/dist/src/types/Event.d.ts +12 -0
  27. package/dist/src/types/Layers.d.ts +55 -0
  28. package/dist/src/types/ModelData.d.ts +70 -0
  29. package/dist/src/types/Plugin.d.ts +39 -0
  30. package/dist/src/types/RawData.d.ts +18 -0
  31. package/dist/src/types/RenderData.d.ts +4 -0
  32. package/dist/src/types/Theme.d.ts +17 -0
  33. package/dist/src/types/Validator.d.ts +20 -0
  34. package/dist/src/types/index.d.ts +12 -0
  35. package/dist/src/utils/aggregateUtils.d.ts +37 -0
  36. package/dist/src/utils/colorUtils.d.ts +22 -0
  37. package/dist/src/utils/commonUtils.d.ts +3 -5
  38. package/dist/src/utils/dom-lifecycle.d.ts +37 -0
  39. package/dist/src/utils/dom.d.ts +6 -0
  40. package/dist/src/utils/index.d.ts +5 -1
  41. package/dist/src/utils/observables.d.ts +1 -25
  42. package/dist/src/utils/orbchartsUtils.d.ts +2 -53
  43. package/dist/src/utils/validator.d.ts +2 -2
  44. package/dist/test/aggregateTest.d.ts +1 -0
  45. package/package.json +26 -13
  46. package/src/OrbCharts.ts +35 -0
  47. package/src/chart/createChart.ts +997 -0
  48. package/src/chart/createGraphData.ts +391 -0
  49. package/src/chart/createGridData.ts +247 -0
  50. package/src/chart/createMultivariateData.ts +181 -0
  51. package/src/chart/createSeriesData.ts +297 -0
  52. package/src/chart/createTreeData.ts +344 -0
  53. package/src/chart/defaults.ts +100 -0
  54. package/src/defineCanvasLayer.ts +24 -0
  55. package/src/defineCanvasPlugin.ts +39 -0
  56. package/src/defineSVGLayer.ts +24 -0
  57. package/src/defineSVGPlugin.ts +39 -0
  58. package/src/index.ts +6 -18
  59. package/src/layer/createLayer.ts +138 -0
  60. package/src/plugin/createPlugin.ts +470 -0
  61. package/src/test/createGraphData.test.ts +103 -0
  62. package/src/test/createTreeData.test.ts +97 -0
  63. package/src/test/simple-graph-test.js +51 -0
  64. package/src/test/simple-tree-test.js +58 -0
  65. package/src/types/Chart.ts +62 -0
  66. package/src/types/ChartContext.ts +42 -0
  67. package/src/types/Common.ts +5 -0
  68. package/src/types/Encoding.ts +43 -0
  69. package/src/types/Event.ts +26 -0
  70. package/src/types/Layers.ts +93 -0
  71. package/src/types/ModelData.ts +95 -0
  72. package/src/types/Plugin.ts +98 -0
  73. package/src/types/RawData.ts +67 -0
  74. package/src/types/RenderData.ts +16 -0
  75. package/src/types/Theme.ts +21 -0
  76. package/src/types/Validator.ts +36 -0
  77. package/src/types/index.ts +12 -0
  78. package/src/utils/aggregateUtils.ts +99 -0
  79. package/src/utils/colorUtils.ts +63 -0
  80. package/src/utils/commonUtils.ts +12 -11
  81. package/src/utils/dom-lifecycle.ts +164 -0
  82. package/src/utils/dom.ts +55 -0
  83. package/src/utils/index.ts +6 -2
  84. package/src/utils/observables.ts +1 -292
  85. package/src/utils/orbchartsUtils.ts +6 -393
  86. package/src/utils/validator.ts +15 -14
  87. package/dist/lib/core-types.d.ts +0 -1
  88. package/dist/src/AbstractChart.d.ts +0 -19
  89. package/dist/src/GridChart.d.ts +0 -6
  90. package/dist/src/MultiGridChart.d.ts +0 -6
  91. package/dist/src/MultiValueChart.d.ts +0 -6
  92. package/dist/src/RelationshipChart.d.ts +0 -6
  93. package/dist/src/SeriesChart.d.ts +0 -6
  94. package/dist/src/TreeChart.d.ts +0 -6
  95. package/dist/src/base/createBaseChart.d.ts +0 -3
  96. package/dist/src/base/createBasePlugin.d.ts +0 -3
  97. package/dist/src/base/validators/chartOptionsValidator.d.ts +0 -3
  98. package/dist/src/base/validators/chartParamsValidator.d.ts +0 -3
  99. package/dist/src/base/validators/elementValidator.d.ts +0 -3
  100. package/dist/src/base/validators/pluginsValidator.d.ts +0 -3
  101. package/dist/src/defaults.d.ts +0 -25
  102. package/dist/src/defineGridPlugin.d.ts +0 -1
  103. package/dist/src/defineMultiGridPlugin.d.ts +0 -1
  104. package/dist/src/defineMultiValuePlugin.d.ts +0 -1
  105. package/dist/src/defineNoneDataPlugin.d.ts +0 -1
  106. package/dist/src/defineRelationshipPlugin.d.ts +0 -1
  107. package/dist/src/defineSeriesPlugin.d.ts +0 -1
  108. package/dist/src/defineTreePlugin.d.ts +0 -1
  109. package/dist/src/grid/computedDataFn.d.ts +0 -4
  110. package/dist/src/grid/contextObserverCallback.d.ts +0 -3
  111. package/dist/src/grid/dataFormatterValidator.d.ts +0 -3
  112. package/dist/src/grid/dataValidator.d.ts +0 -3
  113. package/dist/src/grid/gridObservables.d.ts +0 -64
  114. package/dist/src/multiGrid/computedDataFn.d.ts +0 -3
  115. package/dist/src/multiGrid/contextObserverCallback.d.ts +0 -3
  116. package/dist/src/multiGrid/dataFormatterValidator.d.ts +0 -3
  117. package/dist/src/multiGrid/dataValidator.d.ts +0 -3
  118. package/dist/src/multiGrid/multiGridObservables.d.ts +0 -16
  119. package/dist/src/multiValue/computedDataFn.d.ts +0 -3
  120. package/dist/src/multiValue/contextObserverCallback.d.ts +0 -3
  121. package/dist/src/multiValue/dataFormatterValidator.d.ts +0 -3
  122. package/dist/src/multiValue/dataValidator.d.ts +0 -3
  123. package/dist/src/multiValue/multiValueObservables.d.ts +0 -130
  124. package/dist/src/relationship/computedDataFn.d.ts +0 -3
  125. package/dist/src/relationship/contextObserverCallback.d.ts +0 -3
  126. package/dist/src/relationship/dataFormatterValidator.d.ts +0 -3
  127. package/dist/src/relationship/dataValidator.d.ts +0 -3
  128. package/dist/src/relationship/relationshipObservables.d.ts +0 -13
  129. package/dist/src/series/computedDataFn.d.ts +0 -3
  130. package/dist/src/series/contextObserverCallback.d.ts +0 -3
  131. package/dist/src/series/dataFormatterValidator.d.ts +0 -3
  132. package/dist/src/series/dataValidator.d.ts +0 -3
  133. package/dist/src/series/seriesObservables.d.ts +0 -37
  134. package/dist/src/tree/computedDataFn.d.ts +0 -3
  135. package/dist/src/tree/contextObserverCallback.d.ts +0 -3
  136. package/dist/src/tree/dataFormatterValidator.d.ts +0 -3
  137. package/dist/src/tree/dataValidator.d.ts +0 -3
  138. package/dist/src/tree/treeObservables.d.ts +0 -10
  139. package/dist/src/utils/d3Scale.d.ts +0 -28
  140. package/lib/core-types.ts +0 -7
  141. package/src/AbstractChart.ts +0 -57
  142. package/src/GridChart.ts +0 -25
  143. package/src/MultiGridChart.ts +0 -25
  144. package/src/MultiValueChart.ts +0 -25
  145. package/src/RelationshipChart.ts +0 -25
  146. package/src/SeriesChart.ts +0 -25
  147. package/src/TreeChart.ts +0 -25
  148. package/src/base/createBaseChart.ts +0 -524
  149. package/src/base/createBasePlugin.ts +0 -154
  150. package/src/base/validators/chartOptionsValidator.ts +0 -24
  151. package/src/base/validators/chartParamsValidator.ts +0 -134
  152. package/src/base/validators/elementValidator.ts +0 -14
  153. package/src/base/validators/pluginsValidator.ts +0 -15
  154. package/src/defaults.ts +0 -284
  155. package/src/defineGridPlugin.ts +0 -3
  156. package/src/defineMultiGridPlugin.ts +0 -3
  157. package/src/defineMultiValuePlugin.ts +0 -3
  158. package/src/defineNoneDataPlugin.ts +0 -4
  159. package/src/defineRelationshipPlugin.ts +0 -3
  160. package/src/defineSeriesPlugin.ts +0 -3
  161. package/src/defineTreePlugin.ts +0 -3
  162. package/src/grid/computedDataFn.ts +0 -129
  163. package/src/grid/contextObserverCallback.ts +0 -209
  164. package/src/grid/dataFormatterValidator.ts +0 -126
  165. package/src/grid/dataValidator.ts +0 -13
  166. package/src/grid/gridObservables.ts +0 -699
  167. package/src/multiGrid/computedDataFn.ts +0 -123
  168. package/src/multiGrid/contextObserverCallback.ts +0 -109
  169. package/src/multiGrid/dataFormatterValidator.ts +0 -121
  170. package/src/multiGrid/dataValidator.ts +0 -13
  171. package/src/multiGrid/multiGridObservables.ts +0 -367
  172. package/src/multiValue/computedDataFn.ts +0 -113
  173. package/src/multiValue/contextObserverCallback.ts +0 -328
  174. package/src/multiValue/dataFormatterValidator.ts +0 -95
  175. package/src/multiValue/dataValidator.ts +0 -13
  176. package/src/multiValue/multiValueObservables.ts +0 -865
  177. package/src/relationship/computedDataFn.ts +0 -159
  178. package/src/relationship/contextObserverCallback.ts +0 -80
  179. package/src/relationship/dataFormatterValidator.ts +0 -14
  180. package/src/relationship/dataValidator.ts +0 -14
  181. package/src/relationship/relationshipObservables.ts +0 -85
  182. package/src/series/computedDataFn.ts +0 -88
  183. package/src/series/contextObserverCallback.ts +0 -132
  184. package/src/series/dataFormatterValidator.ts +0 -47
  185. package/src/series/dataValidator.ts +0 -13
  186. package/src/series/seriesObservables.ts +0 -210
  187. package/src/tree/computedDataFn.ts +0 -129
  188. package/src/tree/contextObserverCallback.ts +0 -58
  189. package/src/tree/dataFormatterValidator.ts +0 -14
  190. package/src/tree/dataValidator.ts +0 -14
  191. package/src/tree/treeObservables.ts +0 -106
  192. package/src/utils/d3Scale.ts +0 -198
  193. package/tsconfig.base.json +0 -14
  194. package/tsconfig.json +0 -3
  195. package/vite-env.d.ts +0 -7
  196. package/vite.config.js +0 -23
@@ -1,328 +0,0 @@
1
- import { map, shareReplay, distinctUntilChanged } from 'rxjs'
2
- import type { Observable } from 'rxjs'
3
- import type { ContextObserverCallback, ContextObserverTypeMap } from '../../lib/core-types'
4
- import {
5
- highlightObservable,
6
- categoryDataMapObservable,
7
- textSizePxObservable,
8
- containerSizeObservable
9
- } from '../utils/observables'
10
- import {
11
- computedXYDataObservable,
12
- // multiValueAxesTransformObservable,
13
- // multiValueAxesReverseTransformObservable,
14
- graphicTransformObservable,
15
- graphicReverseScaleObservable,
16
- categoryLabelsObservable,
17
- visibleComputedDataObservable,
18
- visibleComputedSumDataObservable,
19
- visibleComputedRankingByIndexDataObservable,
20
- visibleComputedRankingBySumDataObservable,
21
- visibleComputedXYDataObservable,
22
- containerPositionObservable,
23
- // containerSizeObservable,
24
- xyMinMaxObservable,
25
- valueLabelsObservable,
26
- filteredXYMinMaxDataObservable,
27
- // visibleComputedRankingDataObservable,
28
- // rankingAmountLimitObservable,
29
- // rankingScaleObservable
30
- xScaleObservable,
31
- // xSumScaleObservable,
32
- yScaleObservable,
33
- ordinalScaleDomainObservable,
34
- ordinalPaddingObservable,
35
- ordinalScaleObservable,
36
- // valueLabelsObservable
37
- } from './multiValueObservables'
38
-
39
- export const contextObserverCallback: ContextObserverCallback<'multiValue'> = ({ subject, observer }) => {
40
-
41
- const textSizePx$ = textSizePxObservable(observer.fullChartParams$).pipe(
42
- shareReplay(1)
43
- )
44
-
45
- const isCategorySeprate$ = observer.fullDataFormatter$.pipe(
46
- map(d => d.separateCategory),
47
- distinctUntilChanged(),
48
- shareReplay(1)
49
- )
50
-
51
- const containerPosition$ = containerPositionObservable({
52
- computedData$: observer.computedData$,
53
- fullDataFormatter$: observer.fullDataFormatter$,
54
- layout$: observer.layout$,
55
- }).pipe(
56
- shareReplay(1)
57
- )
58
-
59
- const containerSize$ = containerSizeObservable({
60
- layout$: observer.layout$,
61
- containerPosition$,
62
- container$: observer.fullDataFormatter$.pipe(
63
- map(d => d.container)
64
- )
65
- }).pipe(
66
- shareReplay(1)
67
- )
68
-
69
- // const multiValueAxesSize$ = multiValueAxesSizeObservable({
70
- // fullDataFormatter$: observer.fullDataFormatter$,
71
- // layout$: observer.layout$
72
- // }).pipe(
73
- // shareReplay(1)
74
- // )
75
-
76
- // [xValueIndex, yValueIndex]
77
- const xyValueIndex$: Observable<[number, number]> = observer.fullDataFormatter$.pipe(
78
- map(d => [d.xAxis.valueIndex, d.yAxis.valueIndex] as [number, number]),
79
- distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),
80
- shareReplay(1)
81
- )
82
-
83
- const datumList$ = observer.computedData$.pipe(
84
- map(d => d.flat().flat())
85
- ).pipe(
86
- shareReplay(1)
87
- )
88
-
89
- const highlight$ = highlightObservable({
90
- datumList$,
91
- fullChartParams$: observer.fullChartParams$,
92
- event$: subject.event$
93
- }).pipe(
94
- shareReplay(1)
95
- )
96
-
97
- const categoryLabels$ = categoryLabelsObservable({
98
- computedData$: observer.computedData$,
99
- fullDataFormatter$: observer.fullDataFormatter$,
100
- }).pipe(
101
- shareReplay(1)
102
- )
103
-
104
- const CategoryDataMap$ = categoryDataMapObservable({
105
- datumList$: datumList$
106
- }).pipe(
107
- shareReplay(1)
108
- )
109
-
110
- const valueLabels$ = valueLabelsObservable({
111
- fullDataFormatter$: observer.fullDataFormatter$,
112
- computedData$: observer.computedData$,
113
- }).pipe(
114
- shareReplay(1)
115
- )
116
-
117
- const xyMinMax$ = xyMinMaxObservable({
118
- computedData$: observer.computedData$,
119
- xyValueIndex$
120
- }).pipe(
121
- shareReplay(1)
122
- )
123
-
124
- const visibleComputedData$ = visibleComputedDataObservable({
125
- computedData$: observer.computedData$,
126
- }).pipe(
127
- shareReplay(1)
128
- )
129
-
130
- const ordinalScaleDomain$ = ordinalScaleDomainObservable({
131
- fullDataFormatter$: observer.fullDataFormatter$,
132
- visibleComputedData$: visibleComputedData$,
133
- }).pipe(
134
- shareReplay(1)
135
- )
136
-
137
- const visibleComputedSumData$ = visibleComputedSumDataObservable({
138
- visibleComputedData$,
139
- ordinalScaleDomain$
140
- }).pipe(
141
- shareReplay(1)
142
- )
143
-
144
- // const valueIndex$ = observer.fullDataFormatter$.pipe(
145
- // map(d => d.yAxis.valueIndex),
146
- // distinctUntilChanged()
147
- // )
148
-
149
- const visibleComputedRankingByIndexData$ = visibleComputedRankingByIndexDataObservable({
150
- xyValueIndex$, // * 依據 valueIndex 來取得 visibleComputedData
151
- isCategorySeprate$,
152
- visibleComputedData$
153
- }).pipe(
154
- shareReplay(1)
155
- )
156
-
157
- const visibleComputedRankingBySumData$ = visibleComputedRankingBySumDataObservable({
158
- isCategorySeprate$,
159
- visibleComputedSumData$
160
- }).pipe(
161
- shareReplay(1)
162
- )
163
-
164
- const computedXYData$ = computedXYDataObservable({
165
- computedData$: observer.computedData$,
166
- xyMinMax$,
167
- xyValueIndex$,
168
- fullDataFormatter$: observer.fullDataFormatter$,
169
- layout$: observer.layout$,
170
- }).pipe(
171
- shareReplay(1)
172
- )
173
-
174
- const visibleComputedXYData$ = visibleComputedXYDataObservable({
175
- computedXYData$: computedXYData$,
176
- }).pipe(
177
- shareReplay(1)
178
- )
179
-
180
- const filteredXYMinMaxData$ = filteredXYMinMaxDataObservable({
181
- visibleComputedXYData$: visibleComputedXYData$,
182
- xyMinMax$,
183
- xyValueIndex$,
184
- fullDataFormatter$: observer.fullDataFormatter$,
185
- }).pipe(
186
- shareReplay(1)
187
- )
188
-
189
- // const visibleComputedRankingData$ = visibleComputedRankingDataObservable({
190
- // visibleComputedData$
191
- // }).pipe(
192
- // shareReplay(1)
193
- // )
194
-
195
- // const rankingAmountLimit$ = rankingAmountLimitObservable({
196
- // layout$: observer.layout$,
197
- // textSizePx$
198
- // }).pipe(
199
- // shareReplay(1)
200
- // )
201
-
202
- // const rankingScale$ = rankingScaleObservable({
203
- // layout$: observer.layout$,
204
- // visibleComputedRankingData$,
205
- // rankingAmountLimit$
206
- // }).pipe(
207
- // shareReplay(1)
208
- // )
209
-
210
- // const multiValueAxesTransform$ = multiValueAxesTransformObservable({
211
- // fullDataFormatter$: observer.fullDataFormatter$,
212
- // layout$: observer.layout$
213
- // }).pipe(
214
- // shareReplay(1)
215
- // )
216
-
217
- // const multiValueAxesReverseTransform$ = multiValueAxesReverseTransformObservable({
218
- // multiValueAxesTransform$
219
- // }).pipe(
220
- // shareReplay(1)
221
- // )
222
-
223
- const graphicTransform$ = graphicTransformObservable({
224
- xyMinMax$,
225
- xyValueIndex$,
226
- filteredXYMinMaxData$,
227
- fullDataFormatter$: observer.fullDataFormatter$,
228
- layout$: observer.layout$
229
- }).pipe(
230
- shareReplay(1)
231
- )
232
-
233
- const graphicReverseScale$ = graphicReverseScaleObservable({
234
- containerPosition$: containerPosition$,
235
- // multiValueAxesTransform$: multiValueAxesTransform$,
236
- graphicTransform$: graphicTransform$,
237
- }).pipe(
238
- shareReplay(1)
239
- )
240
-
241
- const xScale$ = xScaleObservable({
242
- visibleComputedSumData$,
243
- fullDataFormatter$: observer.fullDataFormatter$,
244
- filteredXYMinMaxData$,
245
- containerSize$: containerSize$,
246
- }).pipe(
247
- shareReplay(1)
248
- )
249
-
250
- // const xSumScale$ = xSumScaleObservable({
251
- // fullDataFormatter$: observer.fullDataFormatter$,
252
- // filteredXYMinMaxData$,
253
- // containerSize$: containerSize$,
254
- // }).pipe(
255
- // shareReplay(1)
256
- // )
257
-
258
- const yScale$ = yScaleObservable({
259
- fullDataFormatter$: observer.fullDataFormatter$,
260
- filteredXYMinMaxData$,
261
- containerSize$: containerSize$,
262
- }).pipe(
263
- shareReplay(1)
264
- )
265
-
266
- const ordinalPadding$ = ordinalPaddingObservable({
267
- ordinalScaleDomain$,
268
- computedData$: observer.computedData$,
269
- containerSize$: containerSize$,
270
- }).pipe(
271
- shareReplay(1)
272
- )
273
-
274
- const ordinalScale$ = ordinalScaleObservable({
275
- ordinalScaleDomain$,
276
- computedData$: observer.computedData$,
277
- containerSize$: containerSize$,
278
- ordinalPadding$
279
- }).pipe(
280
- shareReplay(1)
281
- )
282
-
283
- // const valueLabels$ = valueLabelsObservable({
284
- // fullDataFormatter$: observer.fullDataFormatter$,
285
- // computedData$: observer.computedData$,
286
- // }).pipe(
287
- // shareReplay(1)
288
- // )
289
-
290
- return <ContextObserverTypeMap<'multiValue', any>>{
291
- fullParams$: observer.fullParams$,
292
- fullChartParams$: observer.fullChartParams$,
293
- fullDataFormatter$: observer.fullDataFormatter$,
294
- computedData$: observer.computedData$,
295
- layout$: observer.layout$,
296
- textSizePx$,
297
- isCategorySeprate$,
298
- containerPosition$,
299
- containerSize$,
300
- // multiValueAxesSize$,
301
- highlight$,
302
- categoryLabels$,
303
- CategoryDataMap$,
304
- valueLabels$,
305
- xyMinMax$,
306
- xyValueIndex$,
307
- // computedXYData$,
308
- visibleComputedData$,
309
- visibleComputedSumData$,
310
- visibleComputedRankingByIndexData$,
311
- visibleComputedRankingBySumData$,
312
- visibleComputedXYData$,
313
- filteredXYMinMaxData$,
314
- // visibleComputedRankingData$,
315
- // rankingScale$,
316
- // multiValueAxesTransform$,
317
- // multiValueAxesReverseTransform$,
318
- graphicTransform$,
319
- graphicReverseScale$,
320
- xScale$,
321
- // xSumScale$,
322
- yScale$,
323
- ordinalScaleDomain$,
324
- ordinalPadding$,
325
- ordinalScale$,
326
- // valueLabels$
327
- }
328
- }
@@ -1,95 +0,0 @@
1
- import type { DataFormatterValidator, DataFormatterTypeMap } from '../../lib/core-types'
2
- import { validateColumns } from '../utils/validator'
3
-
4
- export const dataFormatterValidator: DataFormatterValidator<'multiValue'> = (dataFormatter: DataFormatterTypeMap<'multiValue'>) => {
5
- const result = validateColumns(dataFormatter, {
6
- visibleFilter: {
7
- toBeTypes: ['Function']
8
- },
9
- container: {
10
- toBeTypes: ['object']
11
- },
12
- categoryLabels: {
13
- toBeTypes: ['string[]']
14
- },
15
- valueLabels: {
16
- toBeTypes: ['string[]']
17
- },
18
- xAxis: {
19
- toBeTypes: ['object']
20
- },
21
- yAxis: {
22
- toBeTypes: ['object']
23
- },
24
- separateCategory: {
25
- toBeTypes: ['boolean']
26
- }
27
- })
28
- if (result.status === 'error') {
29
- return result
30
- }
31
- if (dataFormatter.yAxis) {
32
- const valueAxisResult = validateColumns(dataFormatter.yAxis, {
33
- scaleDomain: {
34
- toBe: '[number | "min" | "auto", number | "max" | "auto"]',
35
- test: (value) => Array.isArray(value) && value.length === 2 && (typeof value[0] === 'number' || value[0] === 'min' || value[0] === 'auto') && (typeof value[1] === 'number' || value[1] === 'max' || value[1] === 'auto')
36
- },
37
- scaleRange: {
38
- toBe: '[number, number]',
39
- test: (value) => Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'
40
- },
41
- label: {
42
- toBeTypes: ['string']
43
- },
44
- valueIndex: {
45
- toBeTypes: ['number']
46
- }
47
- })
48
- if (valueAxisResult.status === 'error') {
49
- return valueAxisResult
50
- }
51
- }
52
- if (dataFormatter.xAxis) {
53
- const groupAxisResult = validateColumns(dataFormatter.xAxis, {
54
- scaleDomain: {
55
- toBe: '[number | "min" | "auto", number | "max" | "auto"]',
56
- test: (value) => Array.isArray(value) && value.length === 2 && (typeof value[0] === 'number' || value[0] === 'min' || value[0] === 'auto') && (typeof value[1] === 'number' || value[1] === 'max' || value[1] === 'auto')
57
- },
58
- scaleRange: {
59
- toBe: '[number, number]',
60
- test: (value) => Array.isArray(value) && value.length === 2 && typeof value[0] === 'number' && typeof value[1] === 'number'
61
- },
62
- label: {
63
- toBeTypes: ['string']
64
- },
65
- valueIndex: {
66
- toBeTypes: ['number']
67
- }
68
- })
69
- if (groupAxisResult.status === 'error') {
70
- return groupAxisResult
71
- }
72
- }
73
- if (dataFormatter.container) {
74
- const containerResult = validateColumns(dataFormatter.container, {
75
- columnAmount: {
76
- toBeTypes: ['number']
77
- },
78
- rowAmount: {
79
- toBeTypes: ['number']
80
- },
81
- columnGap: {
82
- toBe: '"auto" | number',
83
- test: (value: any) => value === 'auto' || typeof value === 'number'
84
- },
85
- rowGap: {
86
- toBe: '"auto" | number',
87
- test: (value: any) => value === 'auto' || typeof value === 'number'
88
- },
89
- })
90
- if (containerResult.status === 'error') {
91
- return containerResult
92
- }
93
- }
94
- return result
95
- }
@@ -1,13 +0,0 @@
1
- import type { DataValidator, DataTypeMap } from '../../lib/core-types'
2
- import { validateColumns } from '../utils/validator'
3
-
4
- export const dataValidator: DataValidator<'multiValue'> = (data: DataTypeMap<'multiValue'>) => {
5
- const result = validateColumns({ data }, {
6
- data: {
7
- toBe: '(DataMultiValueDatum | DataMultiValueValue[])[]',
8
- // 畢免資料量過大檢查不完,不深度檢查
9
- test: (value) => Array.isArray(value)
10
- }
11
- })
12
- return result
13
- }