@visactor/vseed 0.0.3 → 0.0.5
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/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.cjs +691 -265
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +446 -80
- package/dist/index.js.map +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/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/types/chartType/vseedDSL.d.ts +0 -16
- /package/dist/builder/register/{register.d.ts → chartType.d.ts} +0 -0
package/dist/index.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { clone as external_remeda_clone, mergeDeep as external_remeda_mergeDeep, pick as external_remeda_pick } from "remeda";
|
1
2
|
import { z } from "zod";
|
2
3
|
const FoldMeasureName = '__MeaName__';
|
3
4
|
const FoldMeasureValue = '__MeaValue__';
|
@@ -180,7 +181,8 @@ const reshapeTo2D1M = (advancedVSeed, context)=>{
|
|
180
181
|
...advancedVSeed
|
181
182
|
};
|
182
183
|
const { vseed } = context;
|
183
|
-
const {
|
184
|
+
const { dataset } = vseed;
|
185
|
+
const { dimensions, measures } = advancedVSeed;
|
184
186
|
if (!measures || !dimensions || !dataset) return result;
|
185
187
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
186
188
|
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
|
@@ -263,55 +265,183 @@ const encodingYX = (advancedVSeed)=>{
|
|
263
265
|
};
|
264
266
|
const initAdvancedVSeed = (advancedVSeed, context)=>{
|
265
267
|
const { vseed } = context;
|
268
|
+
const { chartType = 'table' } = vseed;
|
266
269
|
return {
|
267
270
|
...advancedVSeed,
|
268
|
-
chartType
|
271
|
+
chartType
|
269
272
|
};
|
270
273
|
};
|
274
|
+
const autoMeasures = (advancedVSeed, context)=>{
|
275
|
+
const result = {
|
276
|
+
...advancedVSeed
|
277
|
+
};
|
278
|
+
const { vseed } = context;
|
279
|
+
const { measures, dataset } = vseed;
|
280
|
+
if (!dataset) throw new Error('dataset is required');
|
281
|
+
if (0 === dataset.length) return result;
|
282
|
+
if (measures) {
|
283
|
+
result.measures = measures;
|
284
|
+
return result;
|
285
|
+
}
|
286
|
+
const top100dataset = dataset.slice(0, 100);
|
287
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
288
|
+
...prev,
|
289
|
+
...cur
|
290
|
+
}), {});
|
291
|
+
result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
292
|
+
'',
|
293
|
+
null,
|
294
|
+
void 0
|
295
|
+
].includes(key)).map((measure)=>({
|
296
|
+
id: measure,
|
297
|
+
alias: measure
|
298
|
+
}));
|
299
|
+
return result;
|
300
|
+
};
|
301
|
+
const autoDimensions = (advancedVSeed, context)=>{
|
302
|
+
const result = {
|
303
|
+
...advancedVSeed
|
304
|
+
};
|
305
|
+
const { vseed } = context;
|
306
|
+
const { dimensions, dataset } = vseed;
|
307
|
+
const { measures = [] } = advancedVSeed;
|
308
|
+
if (!dataset) throw new Error('dataset is required');
|
309
|
+
if (0 === dataset.length) return result;
|
310
|
+
if (dimensions) {
|
311
|
+
result.dimensions = dimensions;
|
312
|
+
return result;
|
313
|
+
}
|
314
|
+
const top100dataset = dataset.slice(0, 100);
|
315
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
316
|
+
...prev,
|
317
|
+
...cur
|
318
|
+
}), {});
|
319
|
+
result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
|
320
|
+
'',
|
321
|
+
null,
|
322
|
+
void 0
|
323
|
+
].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
|
324
|
+
id: dim,
|
325
|
+
alias: dim,
|
326
|
+
location: 'dimension'
|
327
|
+
}));
|
328
|
+
return result;
|
329
|
+
};
|
330
|
+
const vchartBaseConfig = (advancedVSeed, context)=>{
|
331
|
+
const { vseed } = context;
|
332
|
+
const result = {
|
333
|
+
...advancedVSeed
|
334
|
+
};
|
335
|
+
const config = external_remeda_pick(vseed, [
|
336
|
+
'backgroundColor',
|
337
|
+
'color',
|
338
|
+
'label',
|
339
|
+
'legend',
|
340
|
+
'tooltip'
|
341
|
+
]);
|
342
|
+
result.baseConfig = {
|
343
|
+
vchart: {
|
344
|
+
...config
|
345
|
+
}
|
346
|
+
};
|
347
|
+
return result;
|
348
|
+
};
|
349
|
+
const vchartTheme = (advancedVSeed, context)=>{
|
350
|
+
const { customTheme, vseed } = context;
|
351
|
+
const { theme = 'light' } = vseed;
|
352
|
+
const result = {
|
353
|
+
...advancedVSeed
|
354
|
+
};
|
355
|
+
if (!customTheme || !customTheme[theme]) return result;
|
356
|
+
const config = result.baseConfig?.vchart;
|
357
|
+
const themeConfig = customTheme?.[theme].baseConfig?.vchart;
|
358
|
+
if (!themeConfig || !config) return result;
|
359
|
+
const mergedConfig = external_remeda_mergeDeep(themeConfig, external_remeda_clone(config));
|
360
|
+
result.baseConfig = {
|
361
|
+
vchart: mergedConfig
|
362
|
+
};
|
363
|
+
return result;
|
364
|
+
};
|
271
365
|
const lineAdvancedPipeline = [
|
272
366
|
initAdvancedVSeed,
|
367
|
+
autoMeasures,
|
368
|
+
autoDimensions,
|
273
369
|
reshapeTo2D1M,
|
274
|
-
encodingXY
|
370
|
+
encodingXY,
|
371
|
+
vchartBaseConfig,
|
372
|
+
vchartTheme
|
275
373
|
];
|
276
374
|
const barAdvancedPipeline = [
|
277
375
|
initAdvancedVSeed,
|
376
|
+
autoMeasures,
|
377
|
+
autoDimensions,
|
278
378
|
reshapeTo2D1M,
|
279
|
-
encodingYX
|
379
|
+
encodingYX,
|
380
|
+
vchartBaseConfig,
|
381
|
+
vchartTheme
|
280
382
|
];
|
281
383
|
const barParallelAdvancedPipeline = [
|
282
384
|
initAdvancedVSeed,
|
385
|
+
autoMeasures,
|
386
|
+
autoDimensions,
|
283
387
|
reshapeTo2D1M,
|
284
|
-
encodingYX
|
388
|
+
encodingYX,
|
389
|
+
vchartBaseConfig,
|
390
|
+
vchartTheme
|
285
391
|
];
|
286
392
|
const barPercentAdvancedPipeline = [
|
287
393
|
initAdvancedVSeed,
|
394
|
+
autoMeasures,
|
395
|
+
autoDimensions,
|
288
396
|
reshapeTo2D1M,
|
289
|
-
encodingYX
|
397
|
+
encodingYX,
|
398
|
+
vchartBaseConfig,
|
399
|
+
vchartTheme
|
290
400
|
];
|
291
401
|
const columnAdvancedPipeline = [
|
292
402
|
initAdvancedVSeed,
|
403
|
+
autoMeasures,
|
404
|
+
autoDimensions,
|
293
405
|
reshapeTo2D1M,
|
294
|
-
encodingXY
|
406
|
+
encodingXY,
|
407
|
+
vchartBaseConfig,
|
408
|
+
vchartTheme
|
295
409
|
];
|
296
410
|
const columnParallelAdvancedPipeline = [
|
297
411
|
initAdvancedVSeed,
|
412
|
+
autoMeasures,
|
413
|
+
autoDimensions,
|
298
414
|
reshapeTo2D1M,
|
299
|
-
encodingXY
|
415
|
+
encodingXY,
|
416
|
+
vchartBaseConfig,
|
417
|
+
vchartTheme
|
300
418
|
];
|
301
419
|
const columnPercentAdvancedPipeline = [
|
302
420
|
initAdvancedVSeed,
|
421
|
+
autoMeasures,
|
422
|
+
autoDimensions,
|
303
423
|
reshapeTo2D1M,
|
304
|
-
encodingXY
|
424
|
+
encodingXY,
|
425
|
+
vchartBaseConfig,
|
426
|
+
vchartTheme
|
305
427
|
];
|
306
428
|
const areaAdvancedPipeline = [
|
307
429
|
initAdvancedVSeed,
|
430
|
+
autoMeasures,
|
431
|
+
autoDimensions,
|
308
432
|
reshapeTo2D1M,
|
309
|
-
encodingXY
|
433
|
+
encodingXY,
|
434
|
+
vchartBaseConfig,
|
435
|
+
vchartTheme
|
310
436
|
];
|
311
437
|
const areaPercentAdvancedPipeline = [
|
312
438
|
initAdvancedVSeed,
|
439
|
+
autoMeasures,
|
440
|
+
autoDimensions,
|
313
441
|
reshapeTo2D1M,
|
314
|
-
encodingXY
|
442
|
+
encodingXY,
|
443
|
+
vchartBaseConfig,
|
444
|
+
vchartTheme
|
315
445
|
];
|
316
446
|
const dataset_dataset = (spec, context)=>{
|
317
447
|
const { advancedVSeed } = context;
|
@@ -328,11 +458,12 @@ const initColumn = (spec, context)=>{
|
|
328
458
|
};
|
329
459
|
const { advancedVSeed } = context;
|
330
460
|
const { encoding } = advancedVSeed;
|
461
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
331
462
|
result.type = 'bar';
|
332
463
|
result.direction = 'vertical';
|
333
|
-
result.xField = encoding[0].x
|
334
|
-
result.yField = encoding[0].y
|
335
|
-
result.seriesField = encoding[0].group
|
464
|
+
result.xField = encoding[0].x[0];
|
465
|
+
result.yField = encoding[0].y[0];
|
466
|
+
result.seriesField = encoding[0].group[0];
|
336
467
|
result.padding = 0;
|
337
468
|
return result;
|
338
469
|
};
|
@@ -342,6 +473,7 @@ const initBar = (spec, context)=>{
|
|
342
473
|
};
|
343
474
|
const { advancedVSeed } = context;
|
344
475
|
const { encoding } = advancedVSeed;
|
476
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
345
477
|
result.type = 'bar';
|
346
478
|
result.direction = 'horizontal';
|
347
479
|
result.yField = encoding[0].y?.[0];
|
@@ -356,15 +488,16 @@ const initBarParallel = (spec, context)=>{
|
|
356
488
|
};
|
357
489
|
const { advancedVSeed } = context;
|
358
490
|
const { encoding, datasetReshapeInfo } = advancedVSeed;
|
359
|
-
const {
|
491
|
+
const { unfoldInfo } = datasetReshapeInfo;
|
492
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
360
493
|
result.type = 'bar';
|
361
494
|
result.direction = 'horizontal';
|
362
495
|
result.yField = [
|
363
|
-
encoding[0].y
|
364
|
-
|
496
|
+
encoding[0].y[0],
|
497
|
+
unfoldInfo.groupName
|
365
498
|
];
|
366
|
-
result.xField = encoding[0].x
|
367
|
-
result.seriesField = encoding[0].group
|
499
|
+
result.xField = encoding[0].x[0];
|
500
|
+
result.seriesField = encoding[0].group[0];
|
368
501
|
result.padding = 0;
|
369
502
|
return result;
|
370
503
|
};
|
@@ -374,11 +507,12 @@ const initArea = (spec, context)=>{
|
|
374
507
|
};
|
375
508
|
const { advancedVSeed } = context;
|
376
509
|
const { encoding } = advancedVSeed;
|
510
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
377
511
|
result.type = 'area';
|
378
512
|
result.direction = 'vertical';
|
379
|
-
result.xField = encoding[0].x
|
380
|
-
result.yField = encoding[0].y
|
381
|
-
result.seriesField = encoding[0].group
|
513
|
+
result.xField = encoding[0].x[0];
|
514
|
+
result.yField = encoding[0].y[0];
|
515
|
+
result.seriesField = encoding[0].group[0];
|
382
516
|
result.padding = 0;
|
383
517
|
return result;
|
384
518
|
};
|
@@ -388,11 +522,12 @@ const initLine = (spec, context)=>{
|
|
388
522
|
};
|
389
523
|
const { advancedVSeed } = context;
|
390
524
|
const { encoding } = advancedVSeed;
|
525
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
391
526
|
result.type = 'line';
|
392
527
|
result.direction = 'vertical';
|
393
|
-
result.xField = encoding[0].x
|
394
|
-
result.yField = encoding[0].y
|
395
|
-
result.seriesField = encoding[0].group
|
528
|
+
result.xField = encoding[0].x[0];
|
529
|
+
result.yField = encoding[0].y[0];
|
530
|
+
result.seriesField = encoding[0].group[0];
|
396
531
|
result.padding = 0;
|
397
532
|
return result;
|
398
533
|
};
|
@@ -402,15 +537,16 @@ const initColumnParallel = (spec, context)=>{
|
|
402
537
|
};
|
403
538
|
const { advancedVSeed } = context;
|
404
539
|
const { encoding, datasetReshapeInfo } = advancedVSeed;
|
405
|
-
const {
|
540
|
+
const { unfoldInfo } = datasetReshapeInfo;
|
541
|
+
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
406
542
|
result.type = 'bar';
|
407
543
|
result.direction = 'vertical';
|
408
|
-
|
544
|
+
result.xField = [
|
409
545
|
encoding[0].x[0],
|
410
|
-
|
546
|
+
unfoldInfo.groupName
|
411
547
|
];
|
412
|
-
result.yField = encoding[0].y
|
413
|
-
result.seriesField = encoding[0].group
|
548
|
+
result.yField = encoding[0].y[0];
|
549
|
+
result.seriesField = encoding[0].group[0];
|
414
550
|
result.padding = 0;
|
415
551
|
return result;
|
416
552
|
};
|
@@ -488,75 +624,205 @@ const stack = (spec, context)=>{
|
|
488
624
|
result.stack = true;
|
489
625
|
return result;
|
490
626
|
};
|
627
|
+
const background_backgroundColor = (spec, context)=>{
|
628
|
+
const result = {
|
629
|
+
...spec
|
630
|
+
};
|
631
|
+
const { advancedVSeed } = context;
|
632
|
+
const { baseConfig } = advancedVSeed;
|
633
|
+
if (!baseConfig?.vchart) return result;
|
634
|
+
const { backgroundColor } = baseConfig.vchart;
|
635
|
+
return {
|
636
|
+
...result,
|
637
|
+
background: backgroundColor
|
638
|
+
};
|
639
|
+
};
|
640
|
+
const defaultTooltip = {
|
641
|
+
enable: true
|
642
|
+
};
|
643
|
+
const tooltip_tooltip = (spec, context)=>{
|
644
|
+
const result = {
|
645
|
+
...spec
|
646
|
+
};
|
647
|
+
const { advancedVSeed } = context;
|
648
|
+
const baseConfig = advancedVSeed.baseConfig.vchart;
|
649
|
+
const { tooltip = defaultTooltip } = baseConfig;
|
650
|
+
const { enable } = tooltip;
|
651
|
+
result.tooltip = {
|
652
|
+
visible: enable
|
653
|
+
};
|
654
|
+
return result;
|
655
|
+
};
|
656
|
+
const label_label = (spec, context)=>{
|
657
|
+
const result = {
|
658
|
+
...spec
|
659
|
+
};
|
660
|
+
const { advancedVSeed } = context;
|
661
|
+
const baseConfig = advancedVSeed.baseConfig.vchart;
|
662
|
+
if (!baseConfig || !baseConfig.label) return result;
|
663
|
+
const { label } = baseConfig;
|
664
|
+
const { enable } = label;
|
665
|
+
result.label = {
|
666
|
+
visible: enable
|
667
|
+
};
|
668
|
+
return result;
|
669
|
+
};
|
670
|
+
const defaultLegend = {
|
671
|
+
enable: true
|
672
|
+
};
|
673
|
+
const legend_legend = (spec, context)=>{
|
674
|
+
const result = {
|
675
|
+
...spec
|
676
|
+
};
|
677
|
+
const { advancedVSeed } = context;
|
678
|
+
const baseConfig = advancedVSeed.baseConfig.vchart;
|
679
|
+
if (!baseConfig || !baseConfig.legend) return result;
|
680
|
+
const { legend = defaultLegend } = baseConfig;
|
681
|
+
const { enable } = legend;
|
682
|
+
result.legends = {
|
683
|
+
visible: enable
|
684
|
+
};
|
685
|
+
return result;
|
686
|
+
};
|
687
|
+
const color_color = (spec, context)=>{
|
688
|
+
const result = {
|
689
|
+
...spec
|
690
|
+
};
|
691
|
+
const { advancedVSeed } = context;
|
692
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
693
|
+
const { unfoldInfo } = datasetReshapeInfo;
|
694
|
+
const baseConfig = advancedVSeed.baseConfig.vchart;
|
695
|
+
if (!baseConfig || !baseConfig.color) return result;
|
696
|
+
const { color } = baseConfig;
|
697
|
+
const { colorScheme, colorMapping } = color;
|
698
|
+
result.color = {
|
699
|
+
type: 'ordinal',
|
700
|
+
domain: unfoldInfo.colorItems,
|
701
|
+
range: colorScheme,
|
702
|
+
specified: colorMapping
|
703
|
+
};
|
704
|
+
return result;
|
705
|
+
};
|
491
706
|
const lineSpecPipeline = [
|
492
707
|
initLine,
|
708
|
+
color_color,
|
709
|
+
background_backgroundColor,
|
493
710
|
dataset_dataset,
|
494
711
|
xBand,
|
495
|
-
yLinear
|
712
|
+
yLinear,
|
713
|
+
label_label,
|
714
|
+
tooltip_tooltip,
|
715
|
+
legend_legend
|
496
716
|
];
|
497
717
|
const columnSpecPipeline = [
|
498
718
|
initColumn,
|
719
|
+
color_color,
|
720
|
+
background_backgroundColor,
|
499
721
|
dataset_dataset,
|
500
722
|
xBand,
|
501
|
-
yLinear
|
723
|
+
yLinear,
|
724
|
+
label_label,
|
725
|
+
tooltip_tooltip,
|
726
|
+
legend_legend
|
502
727
|
];
|
503
728
|
const columnParallelSpecPipeline = [
|
504
729
|
initColumnParallel,
|
730
|
+
color_color,
|
731
|
+
background_backgroundColor,
|
505
732
|
dataset_dataset,
|
506
733
|
xBand,
|
507
|
-
yLinear
|
734
|
+
yLinear,
|
735
|
+
label_label,
|
736
|
+
tooltip_tooltip,
|
737
|
+
legend_legend
|
508
738
|
];
|
509
739
|
const columnPercentSpecPipeline = [
|
510
740
|
initColumn,
|
741
|
+
color_color,
|
742
|
+
background_backgroundColor,
|
511
743
|
percent,
|
512
744
|
dataset_dataset,
|
513
745
|
xBand,
|
514
|
-
yLinear
|
746
|
+
yLinear,
|
747
|
+
label_label,
|
748
|
+
tooltip_tooltip,
|
749
|
+
legend_legend
|
515
750
|
];
|
516
751
|
const barSpecPipeline = [
|
517
752
|
initBar,
|
753
|
+
color_color,
|
754
|
+
background_backgroundColor,
|
518
755
|
dataset_dataset,
|
519
756
|
xLinear,
|
520
|
-
yBand
|
757
|
+
yBand,
|
758
|
+
label_label,
|
759
|
+
tooltip_tooltip,
|
760
|
+
legend_legend
|
521
761
|
];
|
522
762
|
const barParallelSpecPipeline = [
|
523
763
|
initBarParallel,
|
764
|
+
color_color,
|
765
|
+
background_backgroundColor,
|
524
766
|
dataset_dataset,
|
525
767
|
xLinear,
|
526
|
-
yBand
|
768
|
+
yBand,
|
769
|
+
label_label,
|
770
|
+
tooltip_tooltip,
|
771
|
+
legend_legend
|
527
772
|
];
|
528
773
|
const barPercentSpecPipeline = [
|
529
774
|
initBar,
|
775
|
+
color_color,
|
776
|
+
background_backgroundColor,
|
530
777
|
percent,
|
531
778
|
dataset_dataset,
|
532
779
|
xLinear,
|
533
|
-
yBand
|
780
|
+
yBand,
|
781
|
+
label_label,
|
782
|
+
tooltip_tooltip,
|
783
|
+
legend_legend
|
534
784
|
];
|
535
785
|
const areaSpecPipeline = [
|
536
786
|
initArea,
|
787
|
+
color_color,
|
788
|
+
background_backgroundColor,
|
537
789
|
stack,
|
538
790
|
dataset_dataset,
|
539
791
|
xBand,
|
540
|
-
yLinear
|
792
|
+
yLinear,
|
793
|
+
label_label,
|
794
|
+
tooltip_tooltip,
|
795
|
+
legend_legend
|
541
796
|
];
|
542
797
|
const areaPercentSpecPipeline = [
|
543
798
|
initArea,
|
799
|
+
color_color,
|
800
|
+
background_backgroundColor,
|
544
801
|
percent,
|
545
802
|
dataset_dataset,
|
546
803
|
xBand,
|
547
|
-
yLinear
|
804
|
+
yLinear,
|
805
|
+
label_label,
|
806
|
+
tooltip_tooltip,
|
807
|
+
legend_legend
|
548
808
|
];
|
549
809
|
const execPipeline = (pipeline, context, initialValue = {})=>{
|
550
810
|
const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
|
551
811
|
return result;
|
552
812
|
};
|
813
|
+
const isVTable = (chartType)=>[
|
814
|
+
'table',
|
815
|
+
'pivotTable'
|
816
|
+
].includes(chartType);
|
817
|
+
const isVChart = (chartType)=>!isVTable(chartType);
|
553
818
|
const buildAdvanced = (builder)=>{
|
554
819
|
const { chartType } = builder.vseed;
|
555
820
|
if (!chartType) throw new Error('chartType is nil in buildAdvanced');
|
556
821
|
const pipeline = builder.getAdvancedPipeline(chartType);
|
557
822
|
if (!pipeline) throw new Error(`no advanced pipeline for chartType ${chartType}`);
|
558
823
|
const context = {
|
559
|
-
vseed: builder.vseed
|
824
|
+
vseed: builder.vseed,
|
825
|
+
customTheme: builder.getThemeMap()
|
560
826
|
};
|
561
827
|
try {
|
562
828
|
return execPipeline(pipeline, context);
|
@@ -582,6 +848,7 @@ const buildSpec = (builder, advancedVSeed)=>{
|
|
582
848
|
}
|
583
849
|
};
|
584
850
|
const build = (builder)=>{
|
851
|
+
console.log('debug vseed', builder.vseed);
|
585
852
|
const advancedVSeed = builder.buildAdvanced();
|
586
853
|
console.log('debug advancedVSeed', advancedVSeed);
|
587
854
|
if (!advancedVSeed) throw new Error('advancedVSeed is null');
|
@@ -591,19 +858,17 @@ const build = (builder)=>{
|
|
591
858
|
};
|
592
859
|
class Builder {
|
593
860
|
_vseed;
|
594
|
-
_advancedVSeed;
|
595
|
-
static _advancedPipelineMap = {};
|
596
|
-
static _specPipelineMap = {};
|
597
|
-
static from = (vseed)=>new Builder(vseed);
|
861
|
+
_advancedVSeed = null;
|
598
862
|
constructor(vseed){
|
599
863
|
this._vseed = vseed;
|
600
|
-
this._advancedVSeed = null;
|
601
864
|
}
|
602
865
|
build = ()=>build(this);
|
603
866
|
buildSpec = (advanced)=>buildSpec(this, advanced);
|
604
867
|
buildAdvanced = ()=>buildAdvanced(this);
|
605
868
|
getAdvancedPipeline = (chartType)=>Builder._advancedPipelineMap[chartType];
|
606
869
|
getSpecPipeline = (chartType)=>Builder._specPipelineMap[chartType];
|
870
|
+
getTheme = (themeKey)=>Builder._themeMap[themeKey];
|
871
|
+
getThemeMap = ()=>Builder._themeMap;
|
607
872
|
get vseed() {
|
608
873
|
return this._vseed;
|
609
874
|
}
|
@@ -616,18 +881,11 @@ class Builder {
|
|
616
881
|
set advancedVSeed(value) {
|
617
882
|
this._advancedVSeed = value;
|
618
883
|
}
|
884
|
+
static _advancedPipelineMap = {};
|
885
|
+
static _specPipelineMap = {};
|
886
|
+
static _themeMap = {};
|
887
|
+
static from = (vseed)=>new Builder(vseed);
|
619
888
|
}
|
620
|
-
const registerAll = ()=>{
|
621
|
-
registerLine();
|
622
|
-
registerColumn();
|
623
|
-
registerColumnParallel();
|
624
|
-
registerColumnPercent();
|
625
|
-
registerBar();
|
626
|
-
registerBarParallel();
|
627
|
-
registerBarPercent();
|
628
|
-
registerArea();
|
629
|
-
registerAreaPercent();
|
630
|
-
};
|
631
889
|
const registerColumn = ()=>{
|
632
890
|
Builder._advancedPipelineMap.column = columnAdvancedPipeline;
|
633
891
|
Builder._specPipelineMap.column = columnSpecPipeline;
|
@@ -664,6 +922,94 @@ const registerBarParallel = ()=>{
|
|
664
922
|
Builder._advancedPipelineMap.barParallel = barParallelAdvancedPipeline;
|
665
923
|
Builder._specPipelineMap.barParallel = barParallelSpecPipeline;
|
666
924
|
};
|
925
|
+
const darkTheme = ()=>({
|
926
|
+
baseConfig: {
|
927
|
+
vtable: {
|
928
|
+
backgroundColor: '#141414'
|
929
|
+
},
|
930
|
+
vchart: {
|
931
|
+
backgroundColor: '#141414',
|
932
|
+
color: {
|
933
|
+
colorScheme: [
|
934
|
+
'#2E62F1',
|
935
|
+
'#4DC36A',
|
936
|
+
'#FF8406',
|
937
|
+
'#FFCC00',
|
938
|
+
'#4F44CF',
|
939
|
+
'#5AC8FA',
|
940
|
+
'#003A8C',
|
941
|
+
'#B08AE2',
|
942
|
+
'#FF6341',
|
943
|
+
'#98DD62'
|
944
|
+
]
|
945
|
+
},
|
946
|
+
label: {
|
947
|
+
enable: true
|
948
|
+
},
|
949
|
+
tooltip: {
|
950
|
+
enable: true
|
951
|
+
},
|
952
|
+
legend: {
|
953
|
+
enable: true
|
954
|
+
}
|
955
|
+
}
|
956
|
+
}
|
957
|
+
});
|
958
|
+
const lightTheme = ()=>({
|
959
|
+
baseConfig: {
|
960
|
+
vtable: {
|
961
|
+
backgroundColor: '#ffffff'
|
962
|
+
},
|
963
|
+
vchart: {
|
964
|
+
backgroundColor: '#ffffff',
|
965
|
+
color: {
|
966
|
+
colorScheme: [
|
967
|
+
'#8D72F6',
|
968
|
+
'#5766EC',
|
969
|
+
'#66A3FE',
|
970
|
+
'#51D5E6',
|
971
|
+
'#4EC0B3',
|
972
|
+
'#F9DF90',
|
973
|
+
'#F9AD71',
|
974
|
+
'#ED8888',
|
975
|
+
'#E9A0C3',
|
976
|
+
'#D77DD3'
|
977
|
+
]
|
978
|
+
},
|
979
|
+
label: {
|
980
|
+
enable: true
|
981
|
+
},
|
982
|
+
tooltip: {
|
983
|
+
enable: true
|
984
|
+
},
|
985
|
+
legend: {
|
986
|
+
enable: true
|
987
|
+
}
|
988
|
+
}
|
989
|
+
}
|
990
|
+
});
|
991
|
+
const registerCustomTheme = (key, themeConfig)=>{
|
992
|
+
Builder._themeMap[key] = themeConfig;
|
993
|
+
};
|
994
|
+
const registerLightTheme = ()=>{
|
995
|
+
registerCustomTheme('light', lightTheme());
|
996
|
+
};
|
997
|
+
const registerDarkTheme = ()=>{
|
998
|
+
registerCustomTheme('dark', darkTheme());
|
999
|
+
};
|
1000
|
+
const all_registerAll = ()=>{
|
1001
|
+
registerLine();
|
1002
|
+
registerColumn();
|
1003
|
+
registerColumnParallel();
|
1004
|
+
registerColumnPercent();
|
1005
|
+
registerBar();
|
1006
|
+
registerBarParallel();
|
1007
|
+
registerBarPercent();
|
1008
|
+
registerArea();
|
1009
|
+
registerAreaPercent();
|
1010
|
+
registerLightTheme();
|
1011
|
+
registerDarkTheme();
|
1012
|
+
};
|
667
1013
|
const zChartType = z["enum"]([
|
668
1014
|
'table',
|
669
1015
|
'pivotTable',
|
@@ -727,22 +1073,6 @@ const zMeasureGroup = z.object({
|
|
727
1073
|
}
|
728
1074
|
});
|
729
1075
|
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
1076
|
const zFoldInfo = z.object({
|
747
1077
|
foldMap: z.record(z.string(), z.string().or(z.undefined())),
|
748
1078
|
measureId: z.string(),
|
@@ -757,12 +1087,48 @@ const zDatasetReshapeInfo = z.object({
|
|
757
1087
|
foldInfo: zFoldInfo,
|
758
1088
|
unfoldInfo: zUnfoldInfo
|
759
1089
|
});
|
760
|
-
const
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
1090
|
+
const zEncoding = z.array(z.object({
|
1091
|
+
x: z.array(z.string()).optional(),
|
1092
|
+
y: z.array(z.string()).optional(),
|
1093
|
+
color: z.array(z.string()).optional(),
|
1094
|
+
group: z.array(z.string()).optional(),
|
1095
|
+
angle: z.array(z.string()).optional(),
|
1096
|
+
radius: z.array(z.string()).optional(),
|
1097
|
+
tooltip: z.array(z.string()).optional()
|
1098
|
+
}));
|
1099
|
+
const zBackgroundColor = z.string().default('transparent').optional();
|
1100
|
+
const zLabel = z.object({
|
1101
|
+
enable: z.boolean().default(true).optional()
|
1102
|
+
});
|
1103
|
+
const zColor = z.object({
|
1104
|
+
colorScheme: z.array(z.string()).optional(),
|
1105
|
+
colorMapping: z.record(z.string(), z.string()).optional()
|
1106
|
+
});
|
1107
|
+
const zTooltip = z.object({
|
1108
|
+
enable: z.boolean().default(true).optional()
|
1109
|
+
});
|
1110
|
+
const zLegend = z.object({
|
1111
|
+
enable: z.boolean().default(true).optional()
|
1112
|
+
});
|
1113
|
+
const zVChartBaseConfig = z.object({
|
1114
|
+
backgroundColor: zBackgroundColor,
|
1115
|
+
label: zLabel.optional(),
|
1116
|
+
color: zColor.optional(),
|
1117
|
+
tooltip: zTooltip.optional(),
|
1118
|
+
legend: zLegend.optional()
|
1119
|
+
});
|
1120
|
+
const zVTableBaseConfig = z.object({
|
1121
|
+
backgroundColor: zBackgroundColor
|
1122
|
+
});
|
1123
|
+
const zBaseConfig = z.object({
|
1124
|
+
vchart: zVChartBaseConfig.optional(),
|
1125
|
+
vtable: zVTableBaseConfig.optional()
|
1126
|
+
});
|
1127
|
+
const zCustomThemeConfig = z.object({
|
1128
|
+
baseConfig: zBaseConfig.optional()
|
767
1129
|
});
|
768
|
-
|
1130
|
+
const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional();
|
1131
|
+
const zTheme = z.string();
|
1132
|
+
export { Builder, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, darkTheme, dataReshapeFor1D1M_dataReshapeFor1D1M as dataReshapeFor1D1M, dataReshapeFor2D1M, execPipeline, foldMeasures, isVChart, isVTable, lightTheme, lineAdvancedPipeline, lineSpecPipeline, all_registerAll as registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerLightTheme, registerLine, unfoldDimensions, zBackgroundColor, zBaseConfig, zChartType, zColor, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensions, zEncoding, zFoldInfo, zLabel, zLegend, zMeasure, zMeasureGroup, zMeasures, zTheme, zTooltip, zUnfoldInfo };
|
1133
|
+
|
1134
|
+
//# sourceMappingURL=index.js.map
|