@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.
- package/dist/.rsdoctor/chunkGraph/0 +1 -0
- package/dist/.rsdoctor/configs/0 +1 -0
- package/dist/.rsdoctor/envinfo/0 +1 -0
- package/dist/.rsdoctor/errors/0 +1 -0
- package/dist/.rsdoctor/loader/0 +1 -0
- package/dist/.rsdoctor/manifest.json +52 -0
- package/dist/.rsdoctor/moduleCodeMap/0 +1 -0
- package/dist/.rsdoctor/moduleGraph/0 +1 -0
- package/dist/.rsdoctor/otherReports/0 +1 -0
- package/dist/.rsdoctor/packageGraph/0 +1 -0
- package/dist/.rsdoctor/plugin/0 +1 -0
- package/dist/.rsdoctor/resolver/0 +1 -0
- package/dist/.rsdoctor/summary/0 +1 -0
- package/dist/builder/builder/buildAdvanced.d.ts +1 -1
- package/dist/builder/builder/buildSpec.d.ts +1 -1
- package/dist/builder/builder/builder.d.ts +387 -7
- package/dist/builder/register/all.d.ts +1 -0
- package/dist/builder/register/index.d.ts +3 -1
- package/dist/builder/register/theme.d.ts +4 -0
- package/dist/dataReshape/dataReshapeFor1D1M.d.ts +1 -1
- package/dist/dataReshape/dataReshapeFor2D1M.d.ts +1 -1
- package/dist/dataReshape/foldMeasures.d.ts +2 -2
- package/dist/dataReshape/unfoldDimensions.d.ts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.html +1 -0
- package/dist/pipeline/advanced/pipeline/area.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/areaPercent.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/bar.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/barParallel.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/barPercent.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/column.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/columnParallel.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/columnPercent.d.ts +1 -1
- package/dist/pipeline/advanced/pipeline/line.d.ts +1 -1
- package/dist/pipeline/advanced/pipes/baseConfig/baseConfig.d.ts +3 -0
- package/dist/pipeline/advanced/pipes/baseConfig/index.d.ts +1 -0
- package/dist/pipeline/advanced/pipes/encoding/encodingCartesian.d.ts +1 -1
- package/dist/pipeline/advanced/pipes/index.d.ts +2 -0
- package/dist/pipeline/advanced/pipes/init/autoDimensions.d.ts +2 -0
- package/dist/pipeline/advanced/pipes/init/autoMeasures.d.ts +2 -0
- package/dist/pipeline/advanced/pipes/init/index.d.ts +2 -0
- package/dist/pipeline/advanced/pipes/init/initAdvancedVSeed.d.ts +1 -1
- package/dist/pipeline/advanced/pipes/init/utils.d.ts +1 -0
- package/dist/pipeline/advanced/pipes/reshape/reshapeTo1D1M.d.ts +1 -1
- package/dist/pipeline/advanced/pipes/reshape/reshapeTo2D1M.d.ts +1 -1
- package/dist/pipeline/advanced/pipes/theme/index.d.ts +1 -0
- package/dist/pipeline/advanced/pipes/theme/theme.d.ts +3 -0
- package/dist/pipeline/spec/pipeline/area.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/areaPercent.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/bar.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/barParallel.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/barPercent.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/column.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/columnParallel.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/columnPercent.d.ts +1 -1
- package/dist/pipeline/spec/pipeline/line.d.ts +1 -1
- package/dist/pipeline/spec/pipes/axes/xBand.d.ts +1 -1
- package/dist/pipeline/spec/pipes/axes/xLinear.d.ts +1 -1
- package/dist/pipeline/spec/pipes/axes/yBand.d.ts +1 -1
- package/dist/pipeline/spec/pipes/axes/yLinear.d.ts +1 -1
- package/dist/pipeline/spec/pipes/backgroundColor/background.d.ts +2 -0
- package/dist/pipeline/spec/pipes/backgroundColor/index.d.ts +1 -0
- package/dist/pipeline/spec/pipes/color/color.d.ts +2 -0
- package/dist/pipeline/spec/pipes/color/index.d.ts +1 -0
- package/dist/pipeline/spec/pipes/dataset/dataset.d.ts +1 -1
- package/dist/pipeline/spec/pipes/index.d.ts +5 -0
- package/dist/pipeline/spec/pipes/init/area.d.ts +1 -1
- package/dist/pipeline/spec/pipes/init/bar.d.ts +1 -1
- package/dist/pipeline/spec/pipes/init/barParallel.d.ts +1 -1
- package/dist/pipeline/spec/pipes/init/column.d.ts +1 -1
- package/dist/pipeline/spec/pipes/init/columnParallel.d.ts +1 -1
- package/dist/pipeline/spec/pipes/init/line.d.ts +1 -1
- package/dist/pipeline/spec/pipes/label/index.d.ts +1 -0
- package/dist/pipeline/spec/pipes/label/label.d.ts +2 -0
- package/dist/pipeline/spec/pipes/legend/index.d.ts +1 -0
- package/dist/pipeline/spec/pipes/legend/legend.d.ts +2 -0
- package/dist/pipeline/spec/pipes/percent/percent.d.ts +1 -1
- package/dist/pipeline/spec/pipes/stack/stack.d.ts +1 -1
- package/dist/pipeline/spec/pipes/tooltip/index.d.ts +1 -0
- package/dist/pipeline/spec/pipes/tooltip/tooltip.d.ts +2 -0
- package/dist/pipeline/utils/chatType.d.ts +3 -0
- package/dist/pipeline/utils/index.d.ts +1 -0
- package/dist/pipeline/utils/pipeline.d.ts +1 -1
- package/dist/static/js/271.b02e15b2.js +16 -0
- package/dist/static/js/index.7ac2af0b.js +1 -0
- package/dist/theme/dark.d.ts +2 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/light.d.ts +2 -0
- package/dist/types/{properties/advancedVSeed.d.ts → advancedVSeed.d.ts} +53 -8
- package/dist/types/builder/builder.d.ts +10 -3
- package/dist/types/chartType/area/area.d.ts +38 -3
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +38 -3
- package/dist/types/chartType/bar/bar.d.ts +38 -3
- package/dist/types/chartType/barParallel/barParallel.d.ts +38 -3
- package/dist/types/chartType/barPercent/barPercent.d.ts +38 -3
- package/dist/types/chartType/column/column.d.ts +38 -3
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +38 -3
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +38 -3
- package/dist/types/chartType/donut/donut.d.ts +38 -3
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +38 -3
- package/dist/types/chartType/index.d.ts +1 -1
- package/dist/types/chartType/line/line.d.ts +38 -3
- package/dist/types/chartType/pie/pie.d.ts +38 -3
- package/dist/types/chartType/pivotTable/pivotTable.d.ts +18 -3
- package/dist/types/chartType/rose/rose.d.ts +38 -3
- package/dist/types/chartType/table/table.d.ts +18 -3
- package/dist/types/index.d.ts +2 -0
- package/dist/types/pipeline/advancedVSeed/advancedVSeed.d.ts +4 -1
- package/dist/types/pipeline/spec/spec.d.ts +2 -1
- package/dist/types/properties/baseConfig/backgroundColor.d.ts +8 -0
- package/dist/types/properties/baseConfig/baseConfig.d.ts +44 -0
- package/dist/types/properties/baseConfig/color.d.ts +23 -0
- package/dist/types/properties/baseConfig/index.d.ts +12 -0
- package/dist/types/properties/baseConfig/label.d.ts +11 -0
- package/dist/types/properties/baseConfig/legend.d.ts +11 -0
- package/dist/types/properties/baseConfig/tooltip.d.ts +11 -0
- package/dist/types/properties/chartType/zChartType.d.ts +8 -8
- package/dist/types/properties/index.d.ts +2 -2
- package/dist/types/properties/theme/customTheme.d.ts +49 -0
- package/dist/types/properties/theme/index.d.ts +4 -0
- package/dist/types/properties/theme/theme.d.ts +15 -0
- package/dist/types/{properties/vseed.d.ts → vseed.d.ts} +25 -18
- package/package.json +2 -1
- package/dist/index.cjs +0 -925
- package/dist/index.js +0 -768
- package/dist/types/chartType/vseedDSL.d.ts +0 -16
- /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 };
|