@visactor/vseed 0.1.2 → 0.1.3

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 (55) hide show
  1. package/dist/builder/builder/builder.d.ts +4 -28
  2. package/dist/dataReshape/dataReshapeByEncoding.d.ts +1 -0
  3. package/dist/dataReshape/foldMeasures.d.ts +5 -4
  4. package/dist/index.cjs +335 -250
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.js +335 -247
  7. package/dist/index.js.map +1 -1
  8. package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  9. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -3
  10. package/dist/pipeline/advanced/chart/pipes/{init/autoMeasures.d.ts → measures/buildMeasures.d.ts} +1 -1
  11. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.d.ts +2 -0
  12. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.d.ts +2 -0
  13. package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +3 -0
  14. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +28 -0
  15. package/dist/pipeline/spec/chart/pipes/color/colorAdapter.d.ts +2 -1
  16. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +2 -1
  17. package/dist/pipeline/spec/chart/pipes/color/linearColorForDualAxis.d.ts +2 -0
  18. package/dist/pipeline/utils/chatType.d.ts +1 -1
  19. package/dist/types/advancedVSeed.d.ts +13 -14
  20. package/dist/types/chartType/area/zArea.d.ts +13 -0
  21. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +13 -0
  22. package/dist/types/chartType/bar/zBar.d.ts +13 -0
  23. package/dist/types/chartType/barParallel/zBarParallel.d.ts +13 -0
  24. package/dist/types/chartType/barPercent/zBarPercent.d.ts +13 -0
  25. package/dist/types/chartType/column/zColumn.d.ts +13 -0
  26. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +13 -0
  27. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +13 -0
  28. package/dist/types/chartType/donut/zDonut.d.ts +13 -0
  29. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +65 -0
  30. package/dist/types/chartType/funnel/zFunnel.d.ts +13 -0
  31. package/dist/types/chartType/heatmap/zHeatmap.d.ts +13 -0
  32. package/dist/types/chartType/line/line.d.ts +0 -1
  33. package/dist/types/chartType/line/zLine.d.ts +13 -0
  34. package/dist/types/chartType/pie/zPie.d.ts +13 -0
  35. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +13 -0
  36. package/dist/types/chartType/radar/zRadar.d.ts +13 -0
  37. package/dist/types/chartType/rose/zRose.d.ts +13 -0
  38. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +13 -0
  39. package/dist/types/chartType/scatter/zScatter.d.ts +65 -0
  40. package/dist/types/chartType/table/zTable.d.ts +13 -0
  41. package/dist/types/properties/encoding/encoding.d.ts +0 -1
  42. package/dist/types/properties/encoding/index.d.ts +2 -2
  43. package/dist/types/properties/encoding/zEncoding.d.ts +0 -14
  44. package/dist/types/properties/measures/dualMeasures.d.ts +1 -0
  45. package/dist/types/properties/measures/measures.d.ts +19 -0
  46. package/dist/types/properties/measures/scatterMeasures.d.ts +1 -0
  47. package/dist/types/properties/measures/zDualMeasures.d.ts +104 -0
  48. package/dist/types/properties/measures/zMeasures.d.ts +39 -0
  49. package/dist/types/properties/measures/zScatterMeasures.d.ts +104 -0
  50. package/dist/types/zVseed.d.ts +364 -0
  51. package/dist/umd/index.js +335 -248
  52. package/dist/umd/index.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/pipeline/advanced/chart/pipes/init/autoDualMeasures.d.ts +0 -2
  55. package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +0 -2
package/dist/umd/index.js CHANGED
@@ -195,9 +195,8 @@
195
195
  zBackgroundColor: ()=>zBackgroundColor,
196
196
  registerBarParallel: ()=>registerBarParallel,
197
197
  registerRadar: ()=>registerRadar,
198
- zEncodings: ()=>zEncodings,
199
- pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
200
198
  zLocale: ()=>zLocale,
199
+ pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
201
200
  zMeasure: ()=>zMeasure,
202
201
  FoldXMeasureValue: ()=>FoldXMeasureValue,
203
202
  dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
@@ -1446,6 +1445,39 @@
1446
1445
  locale: locale || 'zh-CN'
1447
1446
  };
1448
1447
  };
1448
+ const getBasicMeasures = (vseed)=>{
1449
+ const { dataset, measures } = vseed;
1450
+ if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
1451
+ return measures;
1452
+ };
1453
+ const generateMeasuresByDataset = (dataset)=>{
1454
+ if (!dataset) throw new Error('dataset is required');
1455
+ if (0 === dataset.length) return [];
1456
+ const top100dataset = dataset.slice(0, 100);
1457
+ const sample = top100dataset.reduce((prev, cur)=>({
1458
+ ...prev,
1459
+ ...cur
1460
+ }), {});
1461
+ const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1462
+ '',
1463
+ null,
1464
+ void 0
1465
+ ].includes(key)).map((measure)=>({
1466
+ id: measure,
1467
+ alias: measure
1468
+ }));
1469
+ return basicMeasures;
1470
+ };
1471
+ const isMeasureTreeWithChildren = (vseed)=>{
1472
+ const { measures } = vseed;
1473
+ if (!measures) return false;
1474
+ return measures.some((measure)=>'children' in measure);
1475
+ };
1476
+ const isMeasureTreeWithParentId = (vseed)=>{
1477
+ const { measures } = vseed;
1478
+ if (!measures) return false;
1479
+ return measures.some((measure)=>'parentId' in measure);
1480
+ };
1449
1481
  const measureDepth = (measures = [])=>{
1450
1482
  if (!measures) return 0;
1451
1483
  let depth = 1;
@@ -1464,23 +1496,26 @@
1464
1496
  const isVChart = (vseed)=>!isVTable(vseed);
1465
1497
  const isPivotChart = (vseed)=>{
1466
1498
  if (isVTable(vseed)) return false;
1499
+ if (isMeasureTreeWithParentId(vseed)) {
1500
+ const parentIds = vseed.measures?.map((measure)=>measure.parentId);
1501
+ return parentIds && parentIds.length > 1;
1502
+ }
1467
1503
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1468
1504
  const { dimensions = [] } = vseed;
1469
1505
  const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1470
1506
  if (hasRowOrColumnDimension) return true;
1471
1507
  if ('scatter' === vseed.chartType) {
1472
- if (vseed.measures) {
1508
+ if (isMeasureTreeWithChildren(vseed)) {
1473
1509
  const depth = measureDepth(vseed.measures);
1474
- if (3 === depth) return true;
1475
- return false;
1510
+ return 3 === depth;
1476
1511
  }
1477
1512
  if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1513
+ return false;
1478
1514
  }
1479
1515
  if ('dualAxis' === vseed.chartType) {
1480
- if (vseed.measures) {
1516
+ if (isMeasureTreeWithChildren(vseed)) {
1481
1517
  const depth = measureDepth(vseed.measures);
1482
- if (3 === depth) return true;
1483
- return false;
1518
+ return 3 === depth;
1484
1519
  }
1485
1520
  if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1486
1521
  }
@@ -1491,77 +1526,49 @@
1491
1526
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1492
1527
  return hasRowOrColumnDimension || hasMeasureGroup;
1493
1528
  };
1494
- const autoMeasures_autoMeasures = (advancedVSeed, context)=>{
1495
- const result = {
1496
- ...advancedVSeed
1497
- };
1498
- const { vseed } = context;
1499
- const { measures, dataset } = vseed;
1500
- if (!dataset) throw new Error('dataset is required');
1501
- if (0 === dataset.length) return result;
1502
- if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
1503
- if (measures) {
1504
- result.measures = measures;
1505
- return result;
1506
- }
1507
- const top100dataset = dataset.slice(0, 100);
1508
- const sample = top100dataset.reduce((prev, cur)=>({
1509
- ...prev,
1510
- ...cur
1511
- }), {});
1512
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1513
- '',
1514
- null,
1515
- void 0
1516
- ].includes(key)).map((measure)=>({
1517
- id: measure,
1518
- alias: measure
1519
- }));
1520
- return result;
1521
- };
1522
- const autoMeasureGroup = (advancedVSeed, context)=>{
1529
+ const buildMeasures = (advancedVSeed, context)=>{
1523
1530
  const { vseed } = context;
1524
- const { measures } = vseed;
1525
- const hasMeasureGroup = measures?.some((measure)=>measure.children);
1526
- if (!measures) return advancedVSeed;
1527
- if (!hasMeasureGroup) {
1528
- const newMeasures = [
1529
- {
1530
- id: 'measureGroup',
1531
- alias: 'measureGroup',
1532
- children: measures
1533
- }
1534
- ];
1535
- return {
1536
- ...advancedVSeed,
1537
- measures: newMeasures
1538
- };
1531
+ if (isMeasureTreeWithChildren(vseed)) {
1532
+ advancedVSeed.measures = vseed.measures;
1533
+ return advancedVSeed;
1539
1534
  }
1540
- let currentGroup = createEmptyMeasureGroup();
1541
- const measureGroups = [];
1542
- for (const measure of measures)if ('children' in measure) {
1543
- if (currentGroup.children?.length) {
1544
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1545
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1546
- measureGroups.push(currentGroup);
1547
- currentGroup = createEmptyMeasureGroup();
1548
- }
1549
- measureGroups.push(measure);
1550
- } else currentGroup.children?.push(measure);
1551
- if (currentGroup.children?.length) {
1552
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1553
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1554
- measureGroups.push(currentGroup);
1555
- currentGroup = createEmptyMeasureGroup();
1535
+ if (isMeasureTreeWithParentId(vseed)) {
1536
+ advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1537
+ return advancedVSeed;
1556
1538
  }
1557
- advancedVSeed.measures = measureGroups;
1539
+ const basicMeasures = getBasicMeasures(vseed);
1540
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1541
+ else advancedVSeed.measures = basicMeasures;
1558
1542
  return advancedVSeed;
1559
1543
  };
1560
- const createEmptyMeasureGroup = ()=>({
1561
- id: '',
1562
- alias: '',
1563
- children: []
1544
+ const generateMeasuresByParentId = (measures)=>{
1545
+ const measureTree = [];
1546
+ measures.forEach((measure)=>{
1547
+ if (!measure.parentId) return;
1548
+ const parent = measureTree.find((item)=>item.id === measure.parentId);
1549
+ if (parent && 'children' in parent) {
1550
+ parent.children = parent.children || [];
1551
+ parent.children.push(measure);
1552
+ } else measureTree.push({
1553
+ id: measure.parentId,
1554
+ children: [
1555
+ measure
1556
+ ]
1557
+ });
1564
1558
  });
1559
+ return measureTree;
1560
+ };
1561
+ const basicMeasuresToMeasureTree = (measures)=>{
1562
+ const id = measures.map((item)=>item.id).join('-');
1563
+ const alias = measures.map((item)=>item.alias || item.id).join('-');
1564
+ return [
1565
+ {
1566
+ id,
1567
+ alias,
1568
+ children: measures
1569
+ }
1570
+ ];
1571
+ };
1565
1572
  const ORIGINAL_DATA = '__OriginalData__';
1566
1573
  const Separator = '-';
1567
1574
  const FoldMeasureName = '__MeaName__';
@@ -1684,8 +1691,7 @@
1684
1691
  return o;
1685
1692
  }
1686
1693
  const foldMeasures = (dataset, measures, encoding, options)=>{
1687
- const { measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue } = options || {};
1688
- const colorMeasureId = encoding?.color?.length === 1 && measures.some((m)=>m.id === encoding?.color?.[0]) ? encoding?.color?.[0] : void 0;
1694
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1689
1695
  const foldInfo = {
1690
1696
  measureId,
1691
1697
  measureName,
@@ -1784,11 +1790,12 @@
1784
1790
  if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1785
1791
  };
1786
1792
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1787
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1793
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
1788
1794
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, encoding, {
1789
1795
  measureId: foldMeasureId,
1790
1796
  measureName: foldMeasureName,
1791
- measureValue: foldMeasureValue
1797
+ measureValue: foldMeasureValue,
1798
+ colorMeasureId
1792
1799
  });
1793
1800
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1794
1801
  foldMeasureId,
@@ -1801,6 +1808,24 @@
1801
1808
  unfoldInfo
1802
1809
  };
1803
1810
  };
1811
+ const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
1812
+ const { advancedVSeed } = context;
1813
+ if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
1814
+ return ordinalPipe(spec, context);
1815
+ };
1816
+ const isLinearColor = (advancedVSeed)=>{
1817
+ const { encoding, measures } = advancedVSeed;
1818
+ const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
1819
+ const { color } = encoding;
1820
+ return color?.length === 1 && measureIdList.includes(color[0]);
1821
+ };
1822
+ const getColorMeasureId = (advancedVSeed)=>{
1823
+ if (isLinearColor(advancedVSeed)) {
1824
+ const { encoding } = advancedVSeed;
1825
+ const { color } = encoding;
1826
+ return color?.[0];
1827
+ }
1828
+ };
1804
1829
  const reshapeWithEncoding = (advancedVSeed, context)=>{
1805
1830
  const result = {
1806
1831
  ...advancedVSeed
@@ -1810,7 +1835,9 @@
1810
1835
  const { dimensions, measures, encoding } = advancedVSeed;
1811
1836
  if (!measures || !dimensions || !dataset || !encoding) return result;
1812
1837
  if (0 === measures.length) throw new Error('measures can not be empty');
1813
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1838
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1839
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1840
+ });
1814
1841
  return {
1815
1842
  ...result,
1816
1843
  dataset: newDatasets,
@@ -1846,7 +1873,8 @@
1846
1873
  if (!measures) return;
1847
1874
  const groupId = measureGroup.id;
1848
1875
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1849
- foldMeasureValue: `${FoldMeasureValue}${groupId}`
1876
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1877
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1850
1878
  });
1851
1879
  const reshapeInfo = {
1852
1880
  id: groupId,
@@ -2062,7 +2090,7 @@
2062
2090
  };
2063
2091
  const lineAdvancedPipeline = [
2064
2092
  initAdvancedVSeed_initAdvancedVSeed,
2065
- autoMeasures_autoMeasures,
2093
+ buildMeasures,
2066
2094
  autoDimensions_autoDimensions,
2067
2095
  encodingForLine,
2068
2096
  pivotAdapter([
@@ -2077,17 +2105,6 @@
2077
2105
  markStyle_markStyle,
2078
2106
  annotation_annotation
2079
2107
  ];
2080
- const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
2081
- const { advancedVSeed } = context;
2082
- if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
2083
- return ordinalPipe(spec, context);
2084
- };
2085
- const isLinearColor = (advancedVSeed)=>{
2086
- const { encoding, measures } = advancedVSeed;
2087
- const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
2088
- const { color } = encoding;
2089
- return color?.length === 1 && measureIdList.includes(color[0]);
2090
- };
2091
2108
  const initLine = (spec, context)=>{
2092
2109
  const result = {
2093
2110
  ...spec
@@ -3937,7 +3954,7 @@
3937
3954
  };
3938
3955
  const columnAdvancedPipeline = [
3939
3956
  initAdvancedVSeed_initAdvancedVSeed,
3940
- autoMeasures_autoMeasures,
3957
+ buildMeasures,
3941
3958
  autoDimensions_autoDimensions,
3942
3959
  encodingForColumn,
3943
3960
  pivotAdapter([
@@ -4386,7 +4403,7 @@
4386
4403
  };
4387
4404
  const columnParallelAdvancedPipeline = [
4388
4405
  initAdvancedVSeed_initAdvancedVSeed,
4389
- autoMeasures_autoMeasures,
4406
+ buildMeasures,
4390
4407
  autoDimensions_autoDimensions,
4391
4408
  encodingForColumn,
4392
4409
  pivotAdapter([
@@ -4483,7 +4500,7 @@
4483
4500
  };
4484
4501
  const columnPercentAdvancedPipeline = [
4485
4502
  initAdvancedVSeed_initAdvancedVSeed,
4486
- autoMeasures_autoMeasures,
4503
+ buildMeasures,
4487
4504
  autoDimensions_autoDimensions,
4488
4505
  encodingForColumn,
4489
4506
  pivotAdapter([
@@ -4622,7 +4639,7 @@
4622
4639
  };
4623
4640
  const barAdvancedPipeline = [
4624
4641
  initAdvancedVSeed_initAdvancedVSeed,
4625
- autoMeasures_autoMeasures,
4642
+ buildMeasures,
4626
4643
  autoDimensions_autoDimensions,
4627
4644
  encodingForBar,
4628
4645
  pivotAdapter([
@@ -4975,7 +4992,7 @@
4975
4992
  };
4976
4993
  const barParallelAdvancedPipeline = [
4977
4994
  initAdvancedVSeed_initAdvancedVSeed,
4978
- autoMeasures_autoMeasures,
4995
+ buildMeasures,
4979
4996
  autoDimensions_autoDimensions,
4980
4997
  encodingForBar,
4981
4998
  pivotAdapter([
@@ -5071,7 +5088,7 @@
5071
5088
  };
5072
5089
  const barPercentAdvancedPipeline = [
5073
5090
  initAdvancedVSeed_initAdvancedVSeed,
5074
- autoMeasures_autoMeasures,
5091
+ buildMeasures,
5075
5092
  autoDimensions_autoDimensions,
5076
5093
  encodingForBar,
5077
5094
  pivotAdapter([
@@ -5142,7 +5159,7 @@
5142
5159
  };
5143
5160
  const areaAdvancedPipeline = [
5144
5161
  initAdvancedVSeed_initAdvancedVSeed,
5145
- autoMeasures_autoMeasures,
5162
+ buildMeasures,
5146
5163
  autoDimensions_autoDimensions,
5147
5164
  encodingForColumn,
5148
5165
  pivotAdapter([
@@ -5300,7 +5317,7 @@
5300
5317
  };
5301
5318
  const areaPercentAdvancedPipeline = [
5302
5319
  initAdvancedVSeed_initAdvancedVSeed,
5303
- autoMeasures_autoMeasures,
5320
+ buildMeasures,
5304
5321
  autoDimensions_autoDimensions,
5305
5322
  encodingForColumn,
5306
5323
  pivotAdapter([
@@ -5376,95 +5393,105 @@
5376
5393
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5377
5394
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5378
5395
  };
5379
- const autoScatterMeasures = (advancedVSeed, context)=>{
5380
- const result = {
5381
- ...advancedVSeed
5382
- };
5396
+ const buildMeasuresForScatter = (advancedVSeed, context)=>{
5383
5397
  const { vseed } = context;
5384
- const { dataset, scatterMeasures, measures } = vseed;
5385
- if (!dataset) throw new Error('dataset is required');
5386
- if (0 === dataset.length) return result;
5387
- if (scatterMeasures) {
5388
- result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5389
- return result;
5398
+ if (isMeasureTreeWithChildren(vseed)) {
5399
+ advancedVSeed.measures = vseed.measures;
5400
+ return advancedVSeed;
5390
5401
  }
5391
- if (measures && measureDepth(measures) > 1) {
5392
- result.measures = measures;
5393
- return result;
5402
+ if (isMeasureTreeWithParentId(vseed)) {
5403
+ advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
5404
+ return advancedVSeed;
5394
5405
  }
5395
- const top100dataset = dataset.slice(0, 100);
5396
- const sample = top100dataset.reduce((prev, cur)=>({
5397
- ...prev,
5398
- ...cur
5399
- }), {});
5400
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5401
- '',
5402
- null,
5403
- void 0
5404
- ].includes(key)).map((measure)=>({
5405
- id: measure,
5406
- alias: measure
5407
- }));
5408
- if (0 === newMeasures.length) result.measures = [];
5409
- else if (1 === newMeasures.length) result.measures = [
5410
- {
5411
- id: 'primary',
5412
- alias: 'primary',
5413
- children: newMeasures
5414
- }
5415
- ];
5416
- else if (newMeasures.length > 1) result.measures = [
5417
- {
5418
- id: 'primary',
5419
- alias: 'primary',
5420
- children: newMeasures.slice(0, 1)
5421
- },
5406
+ const basicMeasures = getBasicMeasures(vseed);
5407
+ const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
5408
+ advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5409
+ return advancedVSeed;
5410
+ };
5411
+ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
5412
+ const yMeasures = [];
5413
+ const xMeasures = [];
5414
+ for(let index = 0; index < basicMeasures.length; index++){
5415
+ const item = basicMeasures[index];
5416
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5417
+ item.encoding
5418
+ ];
5419
+ const isYAxis = encoding.includes('yAxis');
5420
+ const isXAxis = encoding.includes('xAxis');
5421
+ if (isYAxis) yMeasures.push(item);
5422
+ else if (isXAxis) xMeasures.push(item);
5423
+ else if (0 === index) yMeasures.push(item);
5424
+ else xMeasures.push(item);
5425
+ }
5426
+ return [
5422
5427
  {
5423
- id: 'secondary',
5424
- alias: 'secondary',
5425
- children: newMeasures.slice(1)
5428
+ id: 'scatterMeasures',
5429
+ xMeasures,
5430
+ yMeasures
5426
5431
  }
5427
5432
  ];
5428
- return result;
5429
5433
  };
5430
5434
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
5431
5435
  const measureTree = scatterMeasures.map((item, index)=>{
5432
- const { xMeasures, yMeasures } = item;
5436
+ const { id, xMeasures, yMeasures } = item;
5433
5437
  const groupChildren = [];
5434
- let id = '';
5438
+ let groupId = `${id}-`;
5435
5439
  if (xMeasures) {
5436
- const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
5440
+ const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
5437
5441
  xMeasures
5438
5442
  ];
5439
- const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
5440
- id += alias;
5443
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5444
+ groupId += alias;
5441
5445
  groupChildren.push({
5442
5446
  id: `${index}-x`,
5443
- alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
5444
- children: arrXMeasures
5447
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
5448
+ children: arrPrimaryMeasures
5445
5449
  });
5446
5450
  }
5447
5451
  if (yMeasures) {
5448
- const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
5452
+ const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
5449
5453
  yMeasures
5450
5454
  ];
5451
- const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
5452
- id += alias;
5455
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5456
+ groupId += alias;
5453
5457
  groupChildren.push({
5454
5458
  id: `${index}-y`,
5455
- alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
5456
- children: arrYMeasures
5459
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5460
+ children: arrSecondaryMeasures
5457
5461
  });
5458
5462
  }
5459
5463
  return {
5460
- id,
5461
- alias: id,
5464
+ id: groupId,
5465
+ alias: groupId,
5462
5466
  children: groupChildren
5463
5467
  };
5464
5468
  });
5465
5469
  if (1 === scatterMeasures.length) return measureTree[0].children || [];
5466
5470
  return measureTree;
5467
5471
  };
5472
+ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5473
+ const scatterMeasures = [];
5474
+ measures.forEach((item)=>{
5475
+ if (!item.parentId) return;
5476
+ if (!scatterMeasures.find((d)=>d.id === item.parentId)) scatterMeasures.push({
5477
+ id: item.parentId,
5478
+ yMeasures: [],
5479
+ xMeasures: []
5480
+ });
5481
+ const scatterChart = scatterMeasures.find((d)=>d.id === item.parentId);
5482
+ if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
5483
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5484
+ item.encoding
5485
+ ];
5486
+ const isY = encoding.includes('yAxis');
5487
+ const isX = encoding.includes('xAxis');
5488
+ if (isY) scatterChart.yMeasures.push(item);
5489
+ else if (isX) scatterChart.xMeasures.push(item);
5490
+ else if (!isY && !isX) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5491
+ else scatterChart.xMeasures.push(item);
5492
+ });
5493
+ return scatterMeasuresToMeasureTree(scatterMeasures);
5494
+ };
5468
5495
  const encodingForScatter = (advancedVSeed, context)=>{
5469
5496
  const { vseed } = context;
5470
5497
  const { dimensions } = advancedVSeed;
@@ -5520,7 +5547,8 @@
5520
5547
  if (xMeasures && xMeasures.children) {
5521
5548
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5522
5549
  foldMeasureValue: FoldXMeasureValue,
5523
- colorItemAsId: true
5550
+ colorItemAsId: true,
5551
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5524
5552
  });
5525
5553
  datasets.push(newDataset);
5526
5554
  foldInfoList.push(foldInfo);
@@ -5529,7 +5557,8 @@
5529
5557
  if (yMeasures && yMeasures.children) {
5530
5558
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5531
5559
  foldMeasureValue: FoldYMeasureValue,
5532
- colorItemAsId: true
5560
+ colorItemAsId: true,
5561
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5533
5562
  });
5534
5563
  datasets[0] = newDataset;
5535
5564
  foldInfoList.push(foldInfo);
@@ -5584,7 +5613,8 @@
5584
5613
  if (xMeasures && xMeasures.children) {
5585
5614
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5586
5615
  foldMeasureValue: `${FoldXMeasureValue}${index}`,
5587
- colorItemAsId: true
5616
+ colorItemAsId: true,
5617
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5588
5618
  });
5589
5619
  datasets.push(newDataset);
5590
5620
  foldInfoList.push(foldInfo);
@@ -5593,7 +5623,8 @@
5593
5623
  if (yMeasures && yMeasures.children) {
5594
5624
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5595
5625
  foldMeasureValue: `${FoldYMeasureValue}${index}`,
5596
- colorItemAsId: true
5626
+ colorItemAsId: true,
5627
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5597
5628
  });
5598
5629
  datasets.push(newDataset);
5599
5630
  foldInfoList.push(foldInfo);
@@ -5628,7 +5659,7 @@
5628
5659
  };
5629
5660
  const scatterAdvancedPipeline = [
5630
5661
  initAdvancedVSeed_initAdvancedVSeed,
5631
- autoScatterMeasures,
5662
+ buildMeasuresForScatter,
5632
5663
  autoDimensions_autoDimensions,
5633
5664
  encodingForScatter,
5634
5665
  pivotAdapter([
@@ -5775,68 +5806,55 @@
5775
5806
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5776
5807
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5777
5808
  };
5778
- const autoDualMeasures = (advancedVSeed, context)=>{
5779
- const result = {
5780
- ...advancedVSeed
5781
- };
5809
+ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5782
5810
  const { vseed } = context;
5783
- const { dataset, dualMeasures, measures } = vseed;
5784
- if (!dataset) throw new Error('dataset is required');
5785
- if (0 === dataset.length) return result;
5786
- if (dualMeasures) {
5787
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
5788
- return result;
5811
+ if (isMeasureTreeWithChildren(vseed)) {
5812
+ advancedVSeed.measures = vseed.measures;
5813
+ return advancedVSeed;
5789
5814
  }
5790
- if (measures && measureDepth(measures) > 1) {
5791
- result.measures = measures;
5792
- return result;
5815
+ if (isMeasureTreeWithParentId(vseed)) {
5816
+ advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5817
+ return advancedVSeed;
5793
5818
  }
5794
- const top100dataset = dataset.slice(0, 100);
5795
- const sample = top100dataset.reduce((prev, cur)=>({
5796
- ...prev,
5797
- ...cur
5798
- }), {});
5799
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5800
- '',
5801
- null,
5802
- void 0
5803
- ].includes(key)).map((measure)=>({
5804
- id: measure,
5805
- alias: measure
5806
- }));
5807
- if (0 === newMeasures.length) result.measures = [];
5808
- else if (1 === newMeasures.length) result.measures = [
5809
- {
5810
- id: 'primary',
5811
- alias: 'primary',
5812
- children: newMeasures
5813
- }
5814
- ];
5815
- else if (newMeasures.length > 1) result.measures = [
5816
- {
5817
- id: 'primary',
5818
- alias: 'primary',
5819
- children: newMeasures.slice(0, 1)
5820
- },
5819
+ const basicMeasures = getBasicMeasures(vseed);
5820
+ const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
5821
+ advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
5822
+ return advancedVSeed;
5823
+ };
5824
+ const basicMeasuresToDualMeasures = (basicMeasures)=>{
5825
+ const primaryMeasures = [];
5826
+ const secondaryMeasures = [];
5827
+ for(let index = 0; index < basicMeasures.length; index++){
5828
+ const item = basicMeasures[index];
5829
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5830
+ item.encoding
5831
+ ];
5832
+ const isPrimaryYAxis = encoding.includes('primaryYAxis');
5833
+ const isSecondaryYAxis = encoding.includes('secondaryYAxis');
5834
+ if (isPrimaryYAxis) primaryMeasures.push(item);
5835
+ else if (isSecondaryYAxis) secondaryMeasures.push(item);
5836
+ else if (0 === index) primaryMeasures.push(item);
5837
+ else secondaryMeasures.push(item);
5838
+ }
5839
+ return [
5821
5840
  {
5822
- id: 'secondary',
5823
- alias: 'secondary',
5824
- children: newMeasures.slice(1)
5841
+ id: 'dualMeasures',
5842
+ primaryMeasures,
5843
+ secondaryMeasures
5825
5844
  }
5826
5845
  ];
5827
- return result;
5828
5846
  };
5829
5847
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
5830
5848
  const measureTree = dualMeasures.map((item, index)=>{
5831
- const { primaryMeasures, secondaryMeasures } = item;
5849
+ const { id, primaryMeasures, secondaryMeasures } = item;
5832
5850
  const groupChildren = [];
5833
- let id = '';
5851
+ let groupId = `${id}-`;
5834
5852
  if (primaryMeasures) {
5835
5853
  const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5836
5854
  primaryMeasures
5837
5855
  ];
5838
5856
  const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5839
- id += alias;
5857
+ groupId += alias;
5840
5858
  groupChildren.push({
5841
5859
  id: `${index}-primary`,
5842
5860
  alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5848,7 +5866,7 @@
5848
5866
  secondaryMeasures
5849
5867
  ];
5850
5868
  const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5851
- id += alias;
5869
+ groupId += alias;
5852
5870
  groupChildren.push({
5853
5871
  id: `${index}-secondary`,
5854
5872
  alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5856,14 +5874,37 @@
5856
5874
  });
5857
5875
  }
5858
5876
  return {
5859
- id,
5860
- alias: id,
5877
+ id: groupId,
5878
+ alias: groupId,
5861
5879
  children: groupChildren
5862
5880
  };
5863
5881
  });
5864
5882
  if (1 === dualMeasures.length) return measureTree[0].children || [];
5865
5883
  return measureTree;
5866
5884
  };
5885
+ const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
5886
+ const dualMeasures = [];
5887
+ measures.forEach((item)=>{
5888
+ if (!item.parentId) return;
5889
+ if (!dualMeasures.find((d)=>d.id === item.parentId)) dualMeasures.push({
5890
+ id: item.parentId,
5891
+ primaryMeasures: [],
5892
+ secondaryMeasures: []
5893
+ });
5894
+ const dualChart = dualMeasures.find((d)=>d.id === item.parentId);
5895
+ if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
5896
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5897
+ item.encoding
5898
+ ];
5899
+ const isPrimary = encoding.includes('primaryYAxis');
5900
+ const isSecondary = encoding.includes('secondaryYAxis');
5901
+ if (isPrimary) dualChart.primaryMeasures.push(item);
5902
+ else if (isSecondary) dualChart.secondaryMeasures.push(item);
5903
+ else if (!isPrimary && !isSecondary) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
5904
+ else dualChart.secondaryMeasures.push(item);
5905
+ });
5906
+ return dualMeasuresToMeasureTree(dualMeasures);
5907
+ };
5867
5908
  const encodingForDualAxis = (advancedVSeed, context)=>{
5868
5909
  const { vseed } = context;
5869
5910
  const { dimensions } = advancedVSeed;
@@ -5922,7 +5963,8 @@
5922
5963
  const secondaryMeasures = measures[1] || [];
5923
5964
  if (primaryMeasures && primaryMeasures.children) {
5924
5965
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5925
- foldMeasureValue: FoldPrimaryMeasureValue
5966
+ foldMeasureValue: FoldPrimaryMeasureValue,
5967
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5926
5968
  });
5927
5969
  datasets.push(newDataset);
5928
5970
  foldInfoList.push(foldInfo);
@@ -5930,7 +5972,8 @@
5930
5972
  }
5931
5973
  if (secondaryMeasures && secondaryMeasures.children) {
5932
5974
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5933
- foldMeasureValue: FoldSecondaryMeasureValue
5975
+ foldMeasureValue: FoldSecondaryMeasureValue,
5976
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5934
5977
  });
5935
5978
  datasets.push(newDataset);
5936
5979
  foldInfoList.push(foldInfo);
@@ -5984,7 +6027,8 @@
5984
6027
  const secondaryMeasures = measures[1] || [];
5985
6028
  if (primaryMeasures && primaryMeasures.children) {
5986
6029
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5987
- foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
6030
+ foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
6031
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5988
6032
  });
5989
6033
  datasets.push(newDataset);
5990
6034
  foldInfoList.push(foldInfo);
@@ -5992,7 +6036,8 @@
5992
6036
  }
5993
6037
  if (secondaryMeasures && secondaryMeasures.children) {
5994
6038
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5995
- foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
6039
+ foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
6040
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5996
6041
  });
5997
6042
  datasets.push(newDataset);
5998
6043
  foldInfoList.push(foldInfo);
@@ -6050,7 +6095,7 @@
6050
6095
  };
6051
6096
  const dualAxisAdvancedPipeline = [
6052
6097
  initAdvancedVSeed_initAdvancedVSeed,
6053
- autoDualMeasures,
6098
+ buildMeasuresForDualAxis,
6054
6099
  autoDimensions_autoDimensions,
6055
6100
  encodingForDualAxis,
6056
6101
  pivotAdapter([
@@ -6137,7 +6182,7 @@
6137
6182
  result.direction = 'vertical';
6138
6183
  result.xField = unfoldInfo.encodingX;
6139
6184
  if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
6140
- result.seriesField = unfoldInfo.encodingColorId;
6185
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
6141
6186
  result.animation = true;
6142
6187
  return result;
6143
6188
  };
@@ -6763,6 +6808,37 @@
6763
6808
  ];
6764
6809
  return result;
6765
6810
  };
6811
+ const linearColorForDualAxis = (spec, context)=>{
6812
+ const result = {
6813
+ ...spec
6814
+ };
6815
+ const { advancedVSeed } = context;
6816
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
6817
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
6818
+ const baseConfig = advancedVSeed.config[chartType];
6819
+ if (!baseConfig || !baseConfig.color) return result;
6820
+ const { color } = baseConfig;
6821
+ const { colorScheme, linearColorScheme } = color;
6822
+ result.color = {
6823
+ type: 'linear',
6824
+ range: linearColorScheme || colorScheme || [],
6825
+ domain: [
6826
+ {
6827
+ dataId: `${id}-primary-dataset`,
6828
+ fields: [
6829
+ unfoldInfo.encodingColor
6830
+ ]
6831
+ },
6832
+ {
6833
+ dataId: `${id}-secondary-dataset`,
6834
+ fields: [
6835
+ unfoldInfo.encodingColor
6836
+ ]
6837
+ }
6838
+ ]
6839
+ };
6840
+ return result;
6841
+ };
6766
6842
  const dualAxis = [
6767
6843
  seriesDualAxis([
6768
6844
  initDualAxisPrimary,
@@ -6771,11 +6847,11 @@
6771
6847
  labelPrimary,
6772
6848
  tooltipPrimary,
6773
6849
  progressive,
6774
- barStyle_barStyle,
6775
- pointStyle_pointStyle,
6850
+ colorBarStyleFill(barStyle_barStyle),
6851
+ colorPointStyleFill(pointStyle_pointStyle),
6776
6852
  pointStateDimensionHover,
6777
- lineStyle_lineStyle,
6778
- areaStyle_areaStyle
6853
+ colorLineStyleFill(lineStyle_lineStyle),
6854
+ colorAreaStyleFill(areaStyle_areaStyle)
6779
6855
  ], [
6780
6856
  initDualAxisSecondary,
6781
6857
  dualChartTypeSecondary,
@@ -6783,18 +6859,18 @@
6783
6859
  labelSecondary,
6784
6860
  tooltipSecondary,
6785
6861
  progressive,
6786
- barStyle_barStyle,
6787
- pointStyle_pointStyle,
6862
+ colorBarStyleFill(barStyle_barStyle),
6863
+ colorPointStyleFill(pointStyle_pointStyle),
6788
6864
  pointStateDimensionHover,
6789
- lineStyle_lineStyle,
6790
- areaStyle_areaStyle
6865
+ colorLineStyleFill(lineStyle_lineStyle),
6866
+ colorAreaStyleFill(areaStyle_areaStyle)
6791
6867
  ]),
6792
6868
  xBand,
6793
6869
  yLinearPrimary,
6794
6870
  yLinearSecondary,
6795
- color_color,
6871
+ colorAdapter(color_color, linearColorForDualAxis),
6872
+ colorAdapter(discreteLegend, colorLegend),
6796
6873
  background_backgroundColor,
6797
- discreteLegend,
6798
6874
  verticalCrosshairRect,
6799
6875
  annotationPoint_annotationPoint,
6800
6876
  annotationVerticalLine_annotationVerticalLine,
@@ -6814,11 +6890,11 @@
6814
6890
  labelPrimary,
6815
6891
  tooltipPrimary,
6816
6892
  progressive,
6817
- barStyle_barStyle,
6818
- pointStyle_pointStyle,
6893
+ colorBarStyleFill(barStyle_barStyle),
6894
+ colorPointStyleFill(pointStyle_pointStyle),
6819
6895
  pointStateDimensionHover,
6820
- lineStyle_lineStyle,
6821
- areaStyle_areaStyle
6896
+ colorLineStyleFill(lineStyle_lineStyle),
6897
+ colorAreaStyleFill(areaStyle_areaStyle)
6822
6898
  ], [
6823
6899
  initDualAxisSecondary,
6824
6900
  dualChartTypeSecondary,
@@ -6826,16 +6902,16 @@
6826
6902
  labelSecondary,
6827
6903
  tooltipSecondary,
6828
6904
  progressive,
6829
- barStyle_barStyle,
6830
- pointStyle_pointStyle,
6905
+ colorBarStyleFill(barStyle_barStyle),
6906
+ colorPointStyleFill(pointStyle_pointStyle),
6831
6907
  pointStateDimensionHover,
6832
- lineStyle_lineStyle,
6833
- areaStyle_areaStyle
6908
+ colorLineStyleFill(lineStyle_lineStyle),
6909
+ colorAreaStyleFill(areaStyle_areaStyle)
6834
6910
  ]),
6835
6911
  xBand,
6836
6912
  yLinearPrimary,
6837
6913
  yLinearSecondary,
6838
- color_color,
6914
+ colorAdapter(color_color, linearColor),
6839
6915
  background_backgroundColor,
6840
6916
  verticalCrosshairRect,
6841
6917
  annotationPoint_annotationPoint,
@@ -6845,7 +6921,7 @@
6845
6921
  ]),
6846
6922
  pivotRowDimensions,
6847
6923
  pivotColumnDimensions,
6848
- pivotDiscreteLegend
6924
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6849
6925
  ];
6850
6926
  const dualAxisSpecPipeline = [
6851
6927
  pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
@@ -6880,7 +6956,7 @@
6880
6956
  };
6881
6957
  const pieAdvancedPipeline = [
6882
6958
  initAdvancedVSeed_initAdvancedVSeed,
6883
- autoMeasures_autoMeasures,
6959
+ buildMeasures,
6884
6960
  autoDimensions_autoDimensions,
6885
6961
  encodingForPie,
6886
6962
  pivotAdapter([
@@ -6971,7 +7047,7 @@
6971
7047
  };
6972
7048
  const donutAdvancedPipeline = [
6973
7049
  initAdvancedVSeed_initAdvancedVSeed,
6974
- autoMeasures_autoMeasures,
7050
+ buildMeasures,
6975
7051
  autoDimensions_autoDimensions,
6976
7052
  encodingForPie,
6977
7053
  pivotAdapter([
@@ -7103,7 +7179,7 @@
7103
7179
  };
7104
7180
  const roseAdvancedPipeline = [
7105
7181
  initAdvancedVSeed_initAdvancedVSeed,
7106
- autoMeasures_autoMeasures,
7182
+ buildMeasures,
7107
7183
  autoDimensions_autoDimensions,
7108
7184
  encodingForRose,
7109
7185
  pivotAdapter([
@@ -7272,7 +7348,7 @@
7272
7348
  };
7273
7349
  const roseParallelAdvancedPipeline = [
7274
7350
  initAdvancedVSeed_initAdvancedVSeed,
7275
- autoMeasures_autoMeasures,
7351
+ buildMeasures,
7276
7352
  autoDimensions_autoDimensions,
7277
7353
  encodingForRose,
7278
7354
  pivotAdapter([
@@ -7421,7 +7497,7 @@
7421
7497
  };
7422
7498
  const radarAdvancedPipeline = [
7423
7499
  initAdvancedVSeed_initAdvancedVSeed,
7424
- autoMeasures_autoMeasures,
7500
+ buildMeasures,
7425
7501
  autoDimensions_autoDimensions,
7426
7502
  encodingForRadar,
7427
7503
  pivotAdapter([
@@ -7583,7 +7659,7 @@
7583
7659
  };
7584
7660
  const funnelAdvancedPipeline = [
7585
7661
  initAdvancedVSeed_initAdvancedVSeed,
7586
- autoMeasures_autoMeasures,
7662
+ buildMeasures,
7587
7663
  autoDimensions_autoDimensions,
7588
7664
  encodingForFunnel,
7589
7665
  pivotAdapter([
@@ -7714,7 +7790,7 @@
7714
7790
  };
7715
7791
  const heatmapAdvancedPipeline = [
7716
7792
  initAdvancedVSeed_initAdvancedVSeed,
7717
- autoMeasures_autoMeasures,
7793
+ buildMeasures,
7718
7794
  autoDimensions_autoDimensions,
7719
7795
  encodingForHeatmap,
7720
7796
  pivotAdapter([
@@ -11864,7 +11940,20 @@
11864
11940
  id: schemas_string(),
11865
11941
  alias: schemas_string().optional(),
11866
11942
  autoFormat: schemas_boolean().default(true),
11867
- format: zNumFormat["default"]({})
11943
+ format: zNumFormat["default"]({}),
11944
+ encoding: schemas_enum([
11945
+ 'primaryYAxis',
11946
+ 'secondaryYAxis',
11947
+ 'xAxis',
11948
+ 'yAxis',
11949
+ 'angle',
11950
+ 'radius',
11951
+ 'size',
11952
+ 'color',
11953
+ 'label',
11954
+ 'tooltip'
11955
+ ]).optional(),
11956
+ parentId: schemas_string().optional()
11868
11957
  });
11869
11958
  const zMeasureGroup = schemas_object({
11870
11959
  id: schemas_string(),
@@ -11926,7 +12015,6 @@
11926
12015
  column: schemas_array(schemas_string()).nullish(),
11927
12016
  group: schemas_array(schemas_string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
11928
12017
  });
11929
- const zEncodings = schemas_array(zEncoding);
11930
12018
  const zXBandAxis = schemas_object({
11931
12019
  visible: schemas_boolean().default(true).nullish(),
11932
12020
  labelAutoHide: schemas_boolean().default(true).nullish(),
@@ -13069,7 +13157,6 @@
13069
13157
  dimensions: zDimensionTree,
13070
13158
  measures: zMeasureTree,
13071
13159
  encoding: zEncoding,
13072
- encodings: zEncodings,
13073
13160
  config: zConfig,
13074
13161
  analysis: zAnalysis,
13075
13162
  theme: zTheme,