@visactor/vseed 0.0.3 → 0.0.4

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 (127) hide show
  1. package/dist/.rsdoctor/chunkGraph/0 +1 -0
  2. package/dist/.rsdoctor/configs/0 +1 -0
  3. package/dist/.rsdoctor/envinfo/0 +1 -0
  4. package/dist/.rsdoctor/errors/0 +1 -0
  5. package/dist/.rsdoctor/loader/0 +1 -0
  6. package/dist/.rsdoctor/manifest.json +52 -0
  7. package/dist/.rsdoctor/moduleCodeMap/0 +1 -0
  8. package/dist/.rsdoctor/moduleGraph/0 +1 -0
  9. package/dist/.rsdoctor/otherReports/0 +1 -0
  10. package/dist/.rsdoctor/packageGraph/0 +1 -0
  11. package/dist/.rsdoctor/plugin/0 +1 -0
  12. package/dist/.rsdoctor/resolver/0 +1 -0
  13. package/dist/.rsdoctor/summary/0 +1 -0
  14. package/dist/builder/builder/buildAdvanced.d.ts +1 -1
  15. package/dist/builder/builder/buildSpec.d.ts +1 -1
  16. package/dist/builder/builder/builder.d.ts +387 -7
  17. package/dist/builder/register/all.d.ts +1 -0
  18. package/dist/builder/register/index.d.ts +3 -1
  19. package/dist/builder/register/theme.d.ts +4 -0
  20. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +1 -1
  21. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +1 -1
  22. package/dist/dataReshape/foldMeasures.d.ts +2 -2
  23. package/dist/dataReshape/unfoldDimensions.d.ts +2 -2
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.html +1 -0
  26. package/dist/pipeline/advanced/pipeline/area.d.ts +1 -1
  27. package/dist/pipeline/advanced/pipeline/areaPercent.d.ts +1 -1
  28. package/dist/pipeline/advanced/pipeline/bar.d.ts +1 -1
  29. package/dist/pipeline/advanced/pipeline/barParallel.d.ts +1 -1
  30. package/dist/pipeline/advanced/pipeline/barPercent.d.ts +1 -1
  31. package/dist/pipeline/advanced/pipeline/column.d.ts +1 -1
  32. package/dist/pipeline/advanced/pipeline/columnParallel.d.ts +1 -1
  33. package/dist/pipeline/advanced/pipeline/columnPercent.d.ts +1 -1
  34. package/dist/pipeline/advanced/pipeline/line.d.ts +1 -1
  35. package/dist/pipeline/advanced/pipes/baseConfig/baseConfig.d.ts +3 -0
  36. package/dist/pipeline/advanced/pipes/baseConfig/index.d.ts +1 -0
  37. package/dist/pipeline/advanced/pipes/encoding/encodingCartesian.d.ts +1 -1
  38. package/dist/pipeline/advanced/pipes/index.d.ts +2 -0
  39. package/dist/pipeline/advanced/pipes/init/autoDimensions.d.ts +2 -0
  40. package/dist/pipeline/advanced/pipes/init/autoMeasures.d.ts +2 -0
  41. package/dist/pipeline/advanced/pipes/init/index.d.ts +2 -0
  42. package/dist/pipeline/advanced/pipes/init/initAdvancedVSeed.d.ts +1 -1
  43. package/dist/pipeline/advanced/pipes/init/utils.d.ts +1 -0
  44. package/dist/pipeline/advanced/pipes/reshape/reshapeTo1D1M.d.ts +1 -1
  45. package/dist/pipeline/advanced/pipes/reshape/reshapeTo2D1M.d.ts +1 -1
  46. package/dist/pipeline/advanced/pipes/theme/index.d.ts +1 -0
  47. package/dist/pipeline/advanced/pipes/theme/theme.d.ts +3 -0
  48. package/dist/pipeline/spec/pipeline/area.d.ts +1 -1
  49. package/dist/pipeline/spec/pipeline/areaPercent.d.ts +1 -1
  50. package/dist/pipeline/spec/pipeline/bar.d.ts +1 -1
  51. package/dist/pipeline/spec/pipeline/barParallel.d.ts +1 -1
  52. package/dist/pipeline/spec/pipeline/barPercent.d.ts +1 -1
  53. package/dist/pipeline/spec/pipeline/column.d.ts +1 -1
  54. package/dist/pipeline/spec/pipeline/columnParallel.d.ts +1 -1
  55. package/dist/pipeline/spec/pipeline/columnPercent.d.ts +1 -1
  56. package/dist/pipeline/spec/pipeline/line.d.ts +1 -1
  57. package/dist/pipeline/spec/pipes/axes/xBand.d.ts +1 -1
  58. package/dist/pipeline/spec/pipes/axes/xLinear.d.ts +1 -1
  59. package/dist/pipeline/spec/pipes/axes/yBand.d.ts +1 -1
  60. package/dist/pipeline/spec/pipes/axes/yLinear.d.ts +1 -1
  61. package/dist/pipeline/spec/pipes/backgroundColor/background.d.ts +2 -0
  62. package/dist/pipeline/spec/pipes/backgroundColor/index.d.ts +1 -0
  63. package/dist/pipeline/spec/pipes/color/color.d.ts +2 -0
  64. package/dist/pipeline/spec/pipes/color/index.d.ts +1 -0
  65. package/dist/pipeline/spec/pipes/dataset/dataset.d.ts +1 -1
  66. package/dist/pipeline/spec/pipes/index.d.ts +5 -0
  67. package/dist/pipeline/spec/pipes/init/area.d.ts +1 -1
  68. package/dist/pipeline/spec/pipes/init/bar.d.ts +1 -1
  69. package/dist/pipeline/spec/pipes/init/barParallel.d.ts +1 -1
  70. package/dist/pipeline/spec/pipes/init/column.d.ts +1 -1
  71. package/dist/pipeline/spec/pipes/init/columnParallel.d.ts +1 -1
  72. package/dist/pipeline/spec/pipes/init/line.d.ts +1 -1
  73. package/dist/pipeline/spec/pipes/label/index.d.ts +1 -0
  74. package/dist/pipeline/spec/pipes/label/label.d.ts +2 -0
  75. package/dist/pipeline/spec/pipes/legend/index.d.ts +1 -0
  76. package/dist/pipeline/spec/pipes/legend/legend.d.ts +2 -0
  77. package/dist/pipeline/spec/pipes/percent/percent.d.ts +1 -1
  78. package/dist/pipeline/spec/pipes/stack/stack.d.ts +1 -1
  79. package/dist/pipeline/spec/pipes/tooltip/index.d.ts +1 -0
  80. package/dist/pipeline/spec/pipes/tooltip/tooltip.d.ts +2 -0
  81. package/dist/pipeline/utils/chatType.d.ts +3 -0
  82. package/dist/pipeline/utils/index.d.ts +1 -0
  83. package/dist/pipeline/utils/pipeline.d.ts +1 -1
  84. package/dist/static/js/271.b02e15b2.js +16 -0
  85. package/dist/static/js/index.7ac2af0b.js +1 -0
  86. package/dist/theme/dark.d.ts +2 -0
  87. package/dist/theme/index.d.ts +2 -0
  88. package/dist/theme/light.d.ts +2 -0
  89. package/dist/types/{properties/advancedVSeed.d.ts → advancedVSeed.d.ts} +53 -8
  90. package/dist/types/builder/builder.d.ts +10 -3
  91. package/dist/types/chartType/area/area.d.ts +38 -3
  92. package/dist/types/chartType/areaPercent/areaPercent.d.ts +38 -3
  93. package/dist/types/chartType/bar/bar.d.ts +38 -3
  94. package/dist/types/chartType/barParallel/barParallel.d.ts +38 -3
  95. package/dist/types/chartType/barPercent/barPercent.d.ts +38 -3
  96. package/dist/types/chartType/column/column.d.ts +38 -3
  97. package/dist/types/chartType/columnParallel/columnParallel.d.ts +38 -3
  98. package/dist/types/chartType/columnPercent/columnPercent.d.ts +38 -3
  99. package/dist/types/chartType/donut/donut.d.ts +38 -3
  100. package/dist/types/chartType/dualAxis/dualAxis.d.ts +38 -3
  101. package/dist/types/chartType/index.d.ts +1 -1
  102. package/dist/types/chartType/line/line.d.ts +38 -3
  103. package/dist/types/chartType/pie/pie.d.ts +38 -3
  104. package/dist/types/chartType/pivotTable/pivotTable.d.ts +18 -3
  105. package/dist/types/chartType/rose/rose.d.ts +38 -3
  106. package/dist/types/chartType/table/table.d.ts +18 -3
  107. package/dist/types/index.d.ts +2 -0
  108. package/dist/types/pipeline/advancedVSeed/advancedVSeed.d.ts +4 -1
  109. package/dist/types/pipeline/spec/spec.d.ts +2 -1
  110. package/dist/types/properties/baseConfig/backgroundColor.d.ts +8 -0
  111. package/dist/types/properties/baseConfig/baseConfig.d.ts +44 -0
  112. package/dist/types/properties/baseConfig/color.d.ts +23 -0
  113. package/dist/types/properties/baseConfig/index.d.ts +12 -0
  114. package/dist/types/properties/baseConfig/label.d.ts +11 -0
  115. package/dist/types/properties/baseConfig/legend.d.ts +11 -0
  116. package/dist/types/properties/baseConfig/tooltip.d.ts +11 -0
  117. package/dist/types/properties/chartType/zChartType.d.ts +8 -8
  118. package/dist/types/properties/index.d.ts +2 -2
  119. package/dist/types/properties/theme/customTheme.d.ts +49 -0
  120. package/dist/types/properties/theme/index.d.ts +4 -0
  121. package/dist/types/properties/theme/theme.d.ts +15 -0
  122. package/dist/types/{properties/vseed.d.ts → vseed.d.ts} +25 -18
  123. package/package.json +2 -1
  124. package/dist/index.cjs +0 -925
  125. package/dist/index.js +0 -768
  126. package/dist/types/chartType/vseedDSL.d.ts +0 -16
  127. /package/dist/builder/register/{register.d.ts → chartType.d.ts} +0 -0
package/dist/index.js DELETED
@@ -1,768 +0,0 @@
1
- import { z } from "zod";
2
- const FoldMeasureName = '__MeaName__';
3
- const FoldMeasureValue = '__MeaValue__';
4
- const FoldMeasureId = '__MeaId__';
5
- const FoldDimensionGroup = '__DimGroup__';
6
- const Separator = '-';
7
- const unfoldDimensions = (dataset, dimensions, measures, unfoldStartIndex = 0, foldGroupName = FoldDimensionGroup, dimensionsSeparator = Separator)=>{
8
- if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) throw new Error('unfoldStartIndex is out of range');
9
- const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
10
- const unfoldInfo = {
11
- groupName: foldGroupName,
12
- colorItems: []
13
- };
14
- if (0 === dimensions.length || 0 === measures.length) return {
15
- dataset,
16
- unfoldInfo: {
17
- groupName: foldGroupName,
18
- colorItems: []
19
- }
20
- };
21
- const colorItems = [];
22
- for(let i = 0; i < dataset.length; i++){
23
- const datum = dataset[i];
24
- const colorItem = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator);
25
- datum[foldGroupName] = colorItem;
26
- colorItems.push(colorItem);
27
- }
28
- unfoldInfo.colorItems = colorItems;
29
- return {
30
- dataset,
31
- unfoldInfo
32
- };
33
- };
34
- const generateDimGroupName = (dimensionsToBeGrouped, datum, dimensionsSeparator)=>dimensionsToBeGrouped.map((dim)=>String(datum[dim.id])).join(dimensionsSeparator);
35
- const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
36
- const foldInfo = {
37
- measureId,
38
- measureName,
39
- measureValue,
40
- foldMap: {}
41
- };
42
- const result = new Array(dataset.length * measures.length);
43
- let index = 0;
44
- for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
45
- const datum = {
46
- ...dataset[i]
47
- };
48
- const measure = measures[j];
49
- const { id, alias } = measure;
50
- datum[measureId] = id;
51
- datum[measureName] = alias;
52
- datum[measureValue] = dataset[i][id];
53
- foldInfo.foldMap[id] = alias;
54
- result[index++] = datum;
55
- }
56
- return {
57
- dataset: result,
58
- foldInfo
59
- };
60
- };
61
- const emptyReshapeResult = {
62
- dataset: [],
63
- foldInfo: {
64
- foldMap: {},
65
- measureId: '',
66
- measureName: '',
67
- measureValue: ''
68
- },
69
- unfoldInfo: {
70
- colorItems: [],
71
- groupName: ''
72
- }
73
- };
74
- const dataReshapeFor2D1M = (dataset, dimensions, measures)=>{
75
- if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
76
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, FoldMeasureId, FoldMeasureName, FoldMeasureValue);
77
- if (0 === dimensions.length) {
78
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
79
- {
80
- id: FoldMeasureId,
81
- alias: "\u6307\u6807Id",
82
- location: 'dimension'
83
- },
84
- {
85
- id: FoldMeasureName,
86
- alias: "\u6307\u6807\u540D\u79F0",
87
- location: 'dimension'
88
- }
89
- ], [
90
- {
91
- id: FoldMeasureValue,
92
- alias: "\u6307\u6807\u503C"
93
- }
94
- ], 1, FoldDimensionGroup);
95
- return {
96
- dataset: finalDataset,
97
- foldInfo,
98
- unfoldInfo
99
- };
100
- }
101
- {
102
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
103
- ...dimensions,
104
- {
105
- id: FoldMeasureName,
106
- alias: "\u6307\u6807\u540D\u79F0",
107
- location: 'dimension'
108
- }
109
- ], [
110
- {
111
- id: FoldMeasureValue,
112
- alias: "\u6307\u6807\u503C"
113
- }
114
- ], 1, FoldDimensionGroup);
115
- return {
116
- dataset: finalDataset,
117
- foldInfo,
118
- unfoldInfo
119
- };
120
- }
121
- };
122
- const dataReshapeFor1D1M_emptyReshapeResult = {
123
- dataset: [],
124
- foldInfo: {
125
- foldMap: {},
126
- measureId: '',
127
- measureName: '',
128
- measureValue: ''
129
- },
130
- unfoldInfo: {
131
- groupName: '',
132
- colorItems: []
133
- }
134
- };
135
- const dataReshapeFor1D1M_dataReshapeFor1D1M = (dataset, dimensions, measures)=>{
136
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
137
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, FoldMeasureId, FoldMeasureName, FoldMeasureValue);
138
- if (0 === dimensions.length) {
139
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
140
- {
141
- id: FoldMeasureName,
142
- alias: "\u6307\u6807\u540D\u79F0",
143
- location: 'dimension'
144
- }
145
- ], [
146
- {
147
- id: FoldMeasureValue,
148
- alias: "\u6307\u6807\u503C"
149
- }
150
- ], 0, FoldDimensionGroup);
151
- return {
152
- dataset: finalDataset,
153
- foldInfo,
154
- unfoldInfo
155
- };
156
- }
157
- {
158
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
159
- ...dimensions,
160
- {
161
- id: FoldMeasureName,
162
- alias: "\u6307\u6807\u540D\u79F0",
163
- location: 'dimension'
164
- }
165
- ], [
166
- {
167
- id: FoldMeasureValue,
168
- alias: "\u6307\u6807\u503C"
169
- }
170
- ], 0, FoldDimensionGroup);
171
- return {
172
- dataset: finalDataset,
173
- foldInfo,
174
- unfoldInfo
175
- };
176
- }
177
- };
178
- const reshapeTo2D1M = (advancedVSeed, context)=>{
179
- const result = {
180
- ...advancedVSeed
181
- };
182
- const { vseed } = context;
183
- const { dimensions, measures, dataset } = vseed;
184
- if (!measures || !dimensions || !dataset) return result;
185
- if (0 === measures.length) throw new Error('measures can not be empty');
186
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
187
- return {
188
- ...result,
189
- dataset: newDatasets,
190
- datasetReshapeInfo: {
191
- foldInfo,
192
- unfoldInfo
193
- },
194
- dimensions,
195
- measures
196
- };
197
- };
198
- const encodingXY = (advancedVSeed)=>{
199
- const result = {
200
- ...advancedVSeed
201
- };
202
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
203
- if (!datasetReshapeInfo || !dimensions) return result;
204
- const { foldInfo, unfoldInfo } = datasetReshapeInfo;
205
- const isSingleDimension = 0 === dimensions.length;
206
- const x = [
207
- isSingleDimension ? foldInfo.measureName : dimensions[0].id
208
- ];
209
- const y = [
210
- foldInfo.measureValue
211
- ];
212
- const group = [
213
- isSingleDimension ? foldInfo.measureName : unfoldInfo.groupName
214
- ];
215
- const color = [
216
- foldInfo.measureName
217
- ];
218
- const encoding = [
219
- {
220
- x,
221
- y,
222
- group,
223
- color
224
- }
225
- ];
226
- return {
227
- ...result,
228
- encoding
229
- };
230
- };
231
- const encodingYX = (advancedVSeed)=>{
232
- const result = {
233
- ...advancedVSeed
234
- };
235
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
236
- if (!datasetReshapeInfo || !dimensions) return result;
237
- const { foldInfo, unfoldInfo } = datasetReshapeInfo;
238
- const isSingleDimension = 0 === dimensions.length;
239
- const y = [
240
- isSingleDimension ? foldInfo.measureName : dimensions[0].id
241
- ];
242
- const x = [
243
- foldInfo.measureValue
244
- ];
245
- const group = [
246
- isSingleDimension ? foldInfo.measureName : unfoldInfo.groupName
247
- ];
248
- const color = [
249
- foldInfo.measureName
250
- ];
251
- const encoding = [
252
- {
253
- x,
254
- y,
255
- group,
256
- color
257
- }
258
- ];
259
- return {
260
- ...result,
261
- encoding
262
- };
263
- };
264
- const initAdvancedVSeed = (advancedVSeed, context)=>{
265
- const { vseed } = context;
266
- return {
267
- ...advancedVSeed,
268
- chartType: vseed.chartType
269
- };
270
- };
271
- const lineAdvancedPipeline = [
272
- initAdvancedVSeed,
273
- reshapeTo2D1M,
274
- encodingXY
275
- ];
276
- const barAdvancedPipeline = [
277
- initAdvancedVSeed,
278
- reshapeTo2D1M,
279
- encodingYX
280
- ];
281
- const barParallelAdvancedPipeline = [
282
- initAdvancedVSeed,
283
- reshapeTo2D1M,
284
- encodingYX
285
- ];
286
- const barPercentAdvancedPipeline = [
287
- initAdvancedVSeed,
288
- reshapeTo2D1M,
289
- encodingYX
290
- ];
291
- const columnAdvancedPipeline = [
292
- initAdvancedVSeed,
293
- reshapeTo2D1M,
294
- encodingXY
295
- ];
296
- const columnParallelAdvancedPipeline = [
297
- initAdvancedVSeed,
298
- reshapeTo2D1M,
299
- encodingXY
300
- ];
301
- const columnPercentAdvancedPipeline = [
302
- initAdvancedVSeed,
303
- reshapeTo2D1M,
304
- encodingXY
305
- ];
306
- const areaAdvancedPipeline = [
307
- initAdvancedVSeed,
308
- reshapeTo2D1M,
309
- encodingXY
310
- ];
311
- const areaPercentAdvancedPipeline = [
312
- initAdvancedVSeed,
313
- reshapeTo2D1M,
314
- encodingXY
315
- ];
316
- const dataset_dataset = (spec, context)=>{
317
- const { advancedVSeed } = context;
318
- return {
319
- ...spec,
320
- data: {
321
- values: advancedVSeed.dataset
322
- }
323
- };
324
- };
325
- const initColumn = (spec, context)=>{
326
- const result = {
327
- ...spec
328
- };
329
- const { advancedVSeed } = context;
330
- const { encoding } = advancedVSeed;
331
- result.type = 'bar';
332
- result.direction = 'vertical';
333
- result.xField = encoding[0].x?.[0];
334
- result.yField = encoding[0].y?.[0];
335
- result.seriesField = encoding[0].group?.[0];
336
- result.padding = 0;
337
- return result;
338
- };
339
- const initBar = (spec, context)=>{
340
- const result = {
341
- ...spec
342
- };
343
- const { advancedVSeed } = context;
344
- const { encoding } = advancedVSeed;
345
- result.type = 'bar';
346
- result.direction = 'horizontal';
347
- result.yField = encoding[0].y?.[0];
348
- result.xField = encoding[0].x?.[0];
349
- result.seriesField = encoding[0].group?.[0];
350
- result.padding = 0;
351
- return result;
352
- };
353
- const initBarParallel = (spec, context)=>{
354
- const result = {
355
- ...spec
356
- };
357
- const { advancedVSeed } = context;
358
- const { encoding, datasetReshapeInfo } = advancedVSeed;
359
- const { foldInfo } = datasetReshapeInfo;
360
- result.type = 'bar';
361
- result.direction = 'horizontal';
362
- result.yField = [
363
- encoding[0].y?.[0],
364
- foldInfo?.measureName
365
- ];
366
- result.xField = encoding[0].x?.[0];
367
- result.seriesField = encoding[0].group?.[0];
368
- result.padding = 0;
369
- return result;
370
- };
371
- const initArea = (spec, context)=>{
372
- const result = {
373
- ...spec
374
- };
375
- const { advancedVSeed } = context;
376
- const { encoding } = advancedVSeed;
377
- result.type = 'area';
378
- result.direction = 'vertical';
379
- result.xField = encoding[0].x?.[0];
380
- result.yField = encoding[0].y?.[0];
381
- result.seriesField = encoding[0].group?.[0];
382
- result.padding = 0;
383
- return result;
384
- };
385
- const initLine = (spec, context)=>{
386
- const result = {
387
- ...spec
388
- };
389
- const { advancedVSeed } = context;
390
- const { encoding } = advancedVSeed;
391
- result.type = 'line';
392
- result.direction = 'vertical';
393
- result.xField = encoding[0].x?.[0];
394
- result.yField = encoding[0].y?.[0];
395
- result.seriesField = encoding[0].group?.[0];
396
- result.padding = 0;
397
- return result;
398
- };
399
- const initColumnParallel = (spec, context)=>{
400
- const result = {
401
- ...spec
402
- };
403
- const { advancedVSeed } = context;
404
- const { encoding, datasetReshapeInfo } = advancedVSeed;
405
- const { foldInfo } = datasetReshapeInfo;
406
- result.type = 'bar';
407
- result.direction = 'vertical';
408
- if (encoding[0].x?.[0]) result.xField = [
409
- encoding[0].x[0],
410
- foldInfo.measureName
411
- ];
412
- result.yField = encoding[0].y?.[0];
413
- result.seriesField = encoding[0].group?.[0];
414
- result.padding = 0;
415
- return result;
416
- };
417
- const xBand = (spec)=>{
418
- const result = {
419
- ...spec
420
- };
421
- if (!result.axes) result.axes = [];
422
- result.axes = [
423
- ...result.axes,
424
- {
425
- visible: true,
426
- type: 'band',
427
- orient: 'bottom'
428
- }
429
- ];
430
- return result;
431
- };
432
- const xLinear = (spec)=>{
433
- const result = {
434
- ...spec
435
- };
436
- if (!result.axes) result.axes = [];
437
- result.axes = [
438
- ...result.axes,
439
- {
440
- visible: true,
441
- type: 'linear',
442
- orient: 'bottom'
443
- }
444
- ];
445
- return result;
446
- };
447
- const yBand = (spec)=>{
448
- const result = {
449
- ...spec
450
- };
451
- if (!result.axes) result.axes = [];
452
- result.axes = [
453
- ...result.axes,
454
- {
455
- visible: true,
456
- type: 'band',
457
- orient: 'left'
458
- }
459
- ];
460
- return result;
461
- };
462
- const yLinear = (spec)=>{
463
- const result = {
464
- ...spec
465
- };
466
- if (!result.axes) result.axes = [];
467
- result.axes = [
468
- ...result.axes,
469
- {
470
- visible: true,
471
- type: 'linear',
472
- orient: 'left'
473
- }
474
- ];
475
- return result;
476
- };
477
- const percent = (spec, context)=>{
478
- const result = {
479
- ...spec
480
- };
481
- result.percent = true;
482
- return result;
483
- };
484
- const stack = (spec, context)=>{
485
- const result = {
486
- ...spec
487
- };
488
- result.stack = true;
489
- return result;
490
- };
491
- const lineSpecPipeline = [
492
- initLine,
493
- dataset_dataset,
494
- xBand,
495
- yLinear
496
- ];
497
- const columnSpecPipeline = [
498
- initColumn,
499
- dataset_dataset,
500
- xBand,
501
- yLinear
502
- ];
503
- const columnParallelSpecPipeline = [
504
- initColumnParallel,
505
- dataset_dataset,
506
- xBand,
507
- yLinear
508
- ];
509
- const columnPercentSpecPipeline = [
510
- initColumn,
511
- percent,
512
- dataset_dataset,
513
- xBand,
514
- yLinear
515
- ];
516
- const barSpecPipeline = [
517
- initBar,
518
- dataset_dataset,
519
- xLinear,
520
- yBand
521
- ];
522
- const barParallelSpecPipeline = [
523
- initBarParallel,
524
- dataset_dataset,
525
- xLinear,
526
- yBand
527
- ];
528
- const barPercentSpecPipeline = [
529
- initBar,
530
- percent,
531
- dataset_dataset,
532
- xLinear,
533
- yBand
534
- ];
535
- const areaSpecPipeline = [
536
- initArea,
537
- stack,
538
- dataset_dataset,
539
- xBand,
540
- yLinear
541
- ];
542
- const areaPercentSpecPipeline = [
543
- initArea,
544
- percent,
545
- dataset_dataset,
546
- xBand,
547
- yLinear
548
- ];
549
- const execPipeline = (pipeline, context, initialValue = {})=>{
550
- const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
551
- return result;
552
- };
553
- const buildAdvanced = (builder)=>{
554
- const { chartType } = builder.vseed;
555
- if (!chartType) throw new Error('chartType is nil in buildAdvanced');
556
- const pipeline = builder.getAdvancedPipeline(chartType);
557
- if (!pipeline) throw new Error(`no advanced pipeline for chartType ${chartType}`);
558
- const context = {
559
- vseed: builder.vseed
560
- };
561
- try {
562
- return execPipeline(pipeline, context);
563
- } catch (e) {
564
- console.error(e);
565
- throw new Error("buildAdvanced error, see error info in console");
566
- }
567
- };
568
- const buildSpec = (builder, advancedVSeed)=>{
569
- const { chartType } = builder.vseed;
570
- if (!chartType) throw new Error('chartType is nil in buildSpec');
571
- const pipeline = builder.getSpecPipeline(chartType);
572
- if (!pipeline) throw new Error(`no spec pipeline for chartType ${chartType}`);
573
- const context = {
574
- vseed: builder.vseed,
575
- advancedVSeed
576
- };
577
- try {
578
- return execPipeline(pipeline, context);
579
- } catch (e) {
580
- console.error(e);
581
- throw new Error("buildSpec error, see error info in console");
582
- }
583
- };
584
- const build = (builder)=>{
585
- const advancedVSeed = builder.buildAdvanced();
586
- console.log('debug advancedVSeed', advancedVSeed);
587
- if (!advancedVSeed) throw new Error('advancedVSeed is null');
588
- const spec = builder.buildSpec(advancedVSeed);
589
- console.log('debug spec', spec);
590
- return spec;
591
- };
592
- class Builder {
593
- _vseed;
594
- _advancedVSeed;
595
- static _advancedPipelineMap = {};
596
- static _specPipelineMap = {};
597
- static from = (vseed)=>new Builder(vseed);
598
- constructor(vseed){
599
- this._vseed = vseed;
600
- this._advancedVSeed = null;
601
- }
602
- build = ()=>build(this);
603
- buildSpec = (advanced)=>buildSpec(this, advanced);
604
- buildAdvanced = ()=>buildAdvanced(this);
605
- getAdvancedPipeline = (chartType)=>Builder._advancedPipelineMap[chartType];
606
- getSpecPipeline = (chartType)=>Builder._specPipelineMap[chartType];
607
- get vseed() {
608
- return this._vseed;
609
- }
610
- set vseed(value) {
611
- this._vseed = value;
612
- }
613
- get advancedVSeed() {
614
- return this._advancedVSeed;
615
- }
616
- set advancedVSeed(value) {
617
- this._advancedVSeed = value;
618
- }
619
- }
620
- const registerAll = ()=>{
621
- registerLine();
622
- registerColumn();
623
- registerColumnParallel();
624
- registerColumnPercent();
625
- registerBar();
626
- registerBarParallel();
627
- registerBarPercent();
628
- registerArea();
629
- registerAreaPercent();
630
- };
631
- const registerColumn = ()=>{
632
- Builder._advancedPipelineMap.column = columnAdvancedPipeline;
633
- Builder._specPipelineMap.column = columnSpecPipeline;
634
- };
635
- const registerBar = ()=>{
636
- Builder._advancedPipelineMap.bar = barAdvancedPipeline;
637
- Builder._specPipelineMap.bar = barSpecPipeline;
638
- };
639
- const registerLine = ()=>{
640
- Builder._advancedPipelineMap.line = lineAdvancedPipeline;
641
- Builder._specPipelineMap.line = lineSpecPipeline;
642
- };
643
- const registerArea = ()=>{
644
- Builder._advancedPipelineMap.area = areaAdvancedPipeline;
645
- Builder._specPipelineMap.area = areaSpecPipeline;
646
- };
647
- const registerAreaPercent = ()=>{
648
- Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
649
- Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
650
- };
651
- const registerBarPercent = ()=>{
652
- Builder._advancedPipelineMap.barPercent = barPercentAdvancedPipeline;
653
- Builder._specPipelineMap.barPercent = barPercentSpecPipeline;
654
- };
655
- const registerColumnPercent = ()=>{
656
- Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
657
- Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
658
- };
659
- const registerColumnParallel = ()=>{
660
- Builder._advancedPipelineMap.columnParallel = columnParallelAdvancedPipeline;
661
- Builder._specPipelineMap.columnParallel = columnParallelSpecPipeline;
662
- };
663
- const registerBarParallel = ()=>{
664
- Builder._advancedPipelineMap.barParallel = barParallelAdvancedPipeline;
665
- Builder._specPipelineMap.barParallel = barParallelSpecPipeline;
666
- };
667
- const zChartType = z["enum"]([
668
- 'table',
669
- 'pivotTable',
670
- 'line',
671
- 'column',
672
- 'columnPercent',
673
- 'columnParallel',
674
- 'bar',
675
- 'barPercent',
676
- 'barParallel',
677
- 'area',
678
- 'areaPercent',
679
- 'rose',
680
- 'pie',
681
- 'donut',
682
- 'dualAxis'
683
- ]);
684
- const zDatum = z.record(z.string().or(z.number()), z.any());
685
- const zDataset = z.array(zDatum);
686
- const zDimension = z.object({
687
- id: z.string(),
688
- alias: z.string().optional(),
689
- visible: z.boolean().default(true).optional(),
690
- location: z["enum"]([
691
- 'dimension',
692
- 'rowDimension',
693
- 'columnDimension'
694
- ])
695
- });
696
- const zDimensions = z.array(zDimension).optional();
697
- const zMeasure = z.object({
698
- id: z.string(),
699
- alias: z.string().optional(),
700
- visible: z.boolean().default(true).optional(),
701
- autoFormat: z.boolean().default(true).optional(),
702
- format: z.object({
703
- type: z["enum"]([
704
- 'number',
705
- 'percent',
706
- 'permille'
707
- ]).optional().default('number'),
708
- ratio: z.number().optional().default(1),
709
- symbol: z.string().optional().default(''),
710
- thousandSeparator: z.boolean().optional().default(false),
711
- decimalPlaces: z.number().optional().default(2),
712
- round: z["enum"]([
713
- 'round',
714
- 'floor',
715
- 'ceil'
716
- ]).optional().default('round'),
717
- prefix: z.string().optional().default(''),
718
- suffix: z.string().optional().default('')
719
- }).optional()
720
- });
721
- const zMeasureGroup = z.object({
722
- id: z.string(),
723
- alias: z.string().optional(),
724
- visible: z.boolean().default(true).optional(),
725
- get children () {
726
- return z.array(zMeasureGroup.or(zMeasure)).optional();
727
- }
728
- });
729
- const zMeasures = z.array(zMeasureGroup.or(zMeasure)).optional();
730
- const zVSeed = z.object({
731
- chartType: zChartType,
732
- dataset: zDataset,
733
- dimensions: zDimensions,
734
- measures: zMeasures
735
- });
736
- const VSeedJSONSchema = z.toJSONSchema(zVSeed);
737
- const zEncoding = z.array(z.object({
738
- x: z.array(z.string()).optional(),
739
- y: z.array(z.string()).optional(),
740
- color: z.array(z.string()).optional(),
741
- group: z.array(z.string()).optional(),
742
- angle: z.array(z.string()).optional(),
743
- radius: z.array(z.string()).optional(),
744
- tooltip: z.array(z.string()).optional()
745
- }));
746
- const zFoldInfo = z.object({
747
- foldMap: z.record(z.string(), z.string().or(z.undefined())),
748
- measureId: z.string(),
749
- measureName: z.string(),
750
- measureValue: z.string()
751
- });
752
- const zUnfoldInfo = z.object({
753
- colorItems: z.array(z.string()),
754
- groupName: z.string()
755
- });
756
- const zDatasetReshapeInfo = z.object({
757
- foldInfo: zFoldInfo,
758
- unfoldInfo: zUnfoldInfo
759
- });
760
- const zAdvancedVSeed = z.object({
761
- chartType: zChartType,
762
- dataset: zDataset,
763
- datasetReshapeInfo: zDatasetReshapeInfo,
764
- dimensions: zDimensions,
765
- measures: zMeasures,
766
- encoding: zEncoding
767
- });
768
- export { Builder, VSeedJSONSchema, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, dataReshapeFor1D1M_dataReshapeFor1D1M as dataReshapeFor1D1M, dataReshapeFor2D1M, execPipeline, foldMeasures, lineAdvancedPipeline, lineSpecPipeline, registerAll, registerBar, registerColumn, unfoldDimensions, zAdvancedVSeed, zChartType, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensions, zEncoding, zFoldInfo, zMeasure, zMeasureGroup, zMeasures, zUnfoldInfo, zVSeed };