@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/index.cjs CHANGED
@@ -189,9 +189,8 @@ __webpack_require__.d(__webpack_exports__, {
189
189
  zBackgroundColor: ()=>zBackgroundColor,
190
190
  registerBarParallel: ()=>registerBarParallel,
191
191
  registerRadar: ()=>registerRadar,
192
- zEncodings: ()=>zEncodings,
193
- pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
194
192
  zLocale: ()=>zLocale,
193
+ pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
195
194
  zMeasure: ()=>zMeasure,
196
195
  FoldXMeasureValue: ()=>FoldXMeasureValue,
197
196
  dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
@@ -1272,6 +1271,39 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1272
1271
  locale: locale || 'zh-CN'
1273
1272
  };
1274
1273
  };
1274
+ const getBasicMeasures = (vseed)=>{
1275
+ const { dataset, measures } = vseed;
1276
+ if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
1277
+ return measures;
1278
+ };
1279
+ const generateMeasuresByDataset = (dataset)=>{
1280
+ if (!dataset) throw new Error('dataset is required');
1281
+ if (0 === dataset.length) return [];
1282
+ const top100dataset = dataset.slice(0, 100);
1283
+ const sample = top100dataset.reduce((prev, cur)=>({
1284
+ ...prev,
1285
+ ...cur
1286
+ }), {});
1287
+ const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1288
+ '',
1289
+ null,
1290
+ void 0
1291
+ ].includes(key)).map((measure)=>({
1292
+ id: measure,
1293
+ alias: measure
1294
+ }));
1295
+ return basicMeasures;
1296
+ };
1297
+ const isMeasureTreeWithChildren = (vseed)=>{
1298
+ const { measures } = vseed;
1299
+ if (!measures) return false;
1300
+ return measures.some((measure)=>'children' in measure);
1301
+ };
1302
+ const isMeasureTreeWithParentId = (vseed)=>{
1303
+ const { measures } = vseed;
1304
+ if (!measures) return false;
1305
+ return measures.some((measure)=>'parentId' in measure);
1306
+ };
1275
1307
  const measureDepth = (measures = [])=>{
1276
1308
  if (!measures) return 0;
1277
1309
  let depth = 1;
@@ -1290,23 +1322,26 @@ const isVTable = (vseed)=>[
1290
1322
  const isVChart = (vseed)=>!isVTable(vseed);
1291
1323
  const isPivotChart = (vseed)=>{
1292
1324
  if (isVTable(vseed)) return false;
1325
+ if (isMeasureTreeWithParentId(vseed)) {
1326
+ const parentIds = vseed.measures?.map((measure)=>measure.parentId);
1327
+ return parentIds && parentIds.length > 1;
1328
+ }
1293
1329
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1294
1330
  const { dimensions = [] } = vseed;
1295
1331
  const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1296
1332
  if (hasRowOrColumnDimension) return true;
1297
1333
  if ('scatter' === vseed.chartType) {
1298
- if (vseed.measures) {
1334
+ if (isMeasureTreeWithChildren(vseed)) {
1299
1335
  const depth = measureDepth(vseed.measures);
1300
- if (3 === depth) return true;
1301
- return false;
1336
+ return 3 === depth;
1302
1337
  }
1303
1338
  if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1339
+ return false;
1304
1340
  }
1305
1341
  if ('dualAxis' === vseed.chartType) {
1306
- if (vseed.measures) {
1342
+ if (isMeasureTreeWithChildren(vseed)) {
1307
1343
  const depth = measureDepth(vseed.measures);
1308
- if (3 === depth) return true;
1309
- return false;
1344
+ return 3 === depth;
1310
1345
  }
1311
1346
  if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1312
1347
  }
@@ -1317,77 +1352,49 @@ const isPivotChart = (vseed)=>{
1317
1352
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1318
1353
  return hasRowOrColumnDimension || hasMeasureGroup;
1319
1354
  };
1320
- const autoMeasures_autoMeasures = (advancedVSeed, context)=>{
1321
- const result = {
1322
- ...advancedVSeed
1323
- };
1355
+ const buildMeasures = (advancedVSeed, context)=>{
1324
1356
  const { vseed } = context;
1325
- const { measures, dataset } = vseed;
1326
- if (!dataset) throw new Error('dataset is required');
1327
- if (0 === dataset.length) return result;
1328
- if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
1329
- if (measures) {
1330
- result.measures = measures;
1331
- return result;
1332
- }
1333
- const top100dataset = dataset.slice(0, 100);
1334
- const sample = top100dataset.reduce((prev, cur)=>({
1335
- ...prev,
1336
- ...cur
1337
- }), {});
1338
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1339
- '',
1340
- null,
1341
- void 0
1342
- ].includes(key)).map((measure)=>({
1343
- id: measure,
1344
- alias: measure
1345
- }));
1346
- return result;
1347
- };
1348
- const autoMeasureGroup = (advancedVSeed, context)=>{
1349
- const { vseed } = context;
1350
- const { measures } = vseed;
1351
- const hasMeasureGroup = measures?.some((measure)=>measure.children);
1352
- if (!measures) return advancedVSeed;
1353
- if (!hasMeasureGroup) {
1354
- const newMeasures = [
1355
- {
1356
- id: 'measureGroup',
1357
- alias: 'measureGroup',
1358
- children: measures
1359
- }
1360
- ];
1361
- return {
1362
- ...advancedVSeed,
1363
- measures: newMeasures
1364
- };
1357
+ if (isMeasureTreeWithChildren(vseed)) {
1358
+ advancedVSeed.measures = vseed.measures;
1359
+ return advancedVSeed;
1365
1360
  }
1366
- let currentGroup = createEmptyMeasureGroup();
1367
- const measureGroups = [];
1368
- for (const measure of measures)if ('children' in measure) {
1369
- if (currentGroup.children?.length) {
1370
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1371
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1372
- measureGroups.push(currentGroup);
1373
- currentGroup = createEmptyMeasureGroup();
1374
- }
1375
- measureGroups.push(measure);
1376
- } else currentGroup.children?.push(measure);
1377
- if (currentGroup.children?.length) {
1378
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1379
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1380
- measureGroups.push(currentGroup);
1381
- currentGroup = createEmptyMeasureGroup();
1361
+ if (isMeasureTreeWithParentId(vseed)) {
1362
+ advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1363
+ return advancedVSeed;
1382
1364
  }
1383
- advancedVSeed.measures = measureGroups;
1365
+ const basicMeasures = getBasicMeasures(vseed);
1366
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1367
+ else advancedVSeed.measures = basicMeasures;
1384
1368
  return advancedVSeed;
1385
1369
  };
1386
- const createEmptyMeasureGroup = ()=>({
1387
- id: '',
1388
- alias: '',
1389
- children: []
1370
+ const generateMeasuresByParentId = (measures)=>{
1371
+ const measureTree = [];
1372
+ measures.forEach((measure)=>{
1373
+ if (!measure.parentId) return;
1374
+ const parent = measureTree.find((item)=>item.id === measure.parentId);
1375
+ if (parent && 'children' in parent) {
1376
+ parent.children = parent.children || [];
1377
+ parent.children.push(measure);
1378
+ } else measureTree.push({
1379
+ id: measure.parentId,
1380
+ children: [
1381
+ measure
1382
+ ]
1383
+ });
1390
1384
  });
1385
+ return measureTree;
1386
+ };
1387
+ const basicMeasuresToMeasureTree = (measures)=>{
1388
+ const id = measures.map((item)=>item.id).join('-');
1389
+ const alias = measures.map((item)=>item.alias || item.id).join('-');
1390
+ return [
1391
+ {
1392
+ id,
1393
+ alias,
1394
+ children: measures
1395
+ }
1396
+ ];
1397
+ };
1391
1398
  const ORIGINAL_DATA = '__OriginalData__';
1392
1399
  const Separator = '-';
1393
1400
  const FoldMeasureName = '__MeaName__';
@@ -1489,8 +1496,7 @@ const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1489
1496
  return execPipeline(pipeline, context, advancedVSeed);
1490
1497
  };
1491
1498
  const foldMeasures = (dataset, measures, encoding, options)=>{
1492
- const { measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue } = options || {};
1493
- const colorMeasureId = encoding?.color?.length === 1 && measures.some((m)=>m.id === encoding?.color?.[0]) ? encoding?.color?.[0] : void 0;
1499
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1494
1500
  const foldInfo = {
1495
1501
  measureId,
1496
1502
  measureName,
@@ -1589,11 +1595,12 @@ const applyEncoding = (encoding, dimensions, datum, separator)=>{
1589
1595
  if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1590
1596
  };
1591
1597
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1592
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1598
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
1593
1599
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, encoding, {
1594
1600
  measureId: foldMeasureId,
1595
1601
  measureName: foldMeasureName,
1596
- measureValue: foldMeasureValue
1602
+ measureValue: foldMeasureValue,
1603
+ colorMeasureId
1597
1604
  });
1598
1605
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1599
1606
  foldMeasureId,
@@ -1606,6 +1613,24 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
1606
1613
  unfoldInfo
1607
1614
  };
1608
1615
  };
1616
+ const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
1617
+ const { advancedVSeed } = context;
1618
+ if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
1619
+ return ordinalPipe(spec, context);
1620
+ };
1621
+ const isLinearColor = (advancedVSeed)=>{
1622
+ const { encoding, measures } = advancedVSeed;
1623
+ const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
1624
+ const { color } = encoding;
1625
+ return color?.length === 1 && measureIdList.includes(color[0]);
1626
+ };
1627
+ const getColorMeasureId = (advancedVSeed)=>{
1628
+ if (isLinearColor(advancedVSeed)) {
1629
+ const { encoding } = advancedVSeed;
1630
+ const { color } = encoding;
1631
+ return color?.[0];
1632
+ }
1633
+ };
1609
1634
  const reshapeWithEncoding = (advancedVSeed, context)=>{
1610
1635
  const result = {
1611
1636
  ...advancedVSeed
@@ -1615,7 +1640,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
1615
1640
  const { dimensions, measures, encoding } = advancedVSeed;
1616
1641
  if (!measures || !dimensions || !dataset || !encoding) return result;
1617
1642
  if (0 === measures.length) throw new Error('measures can not be empty');
1618
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1643
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1644
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1645
+ });
1619
1646
  return {
1620
1647
  ...result,
1621
1648
  dataset: newDatasets,
@@ -1651,7 +1678,8 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1651
1678
  if (!measures) return;
1652
1679
  const groupId = measureGroup.id;
1653
1680
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1654
- foldMeasureValue: `${FoldMeasureValue}${groupId}`
1681
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1682
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1655
1683
  });
1656
1684
  const reshapeInfo = {
1657
1685
  id: groupId,
@@ -1858,7 +1886,7 @@ const annotation_annotation = (advancedVSeed, context)=>{
1858
1886
  };
1859
1887
  const lineAdvancedPipeline = [
1860
1888
  initAdvancedVSeed_initAdvancedVSeed,
1861
- autoMeasures_autoMeasures,
1889
+ buildMeasures,
1862
1890
  autoDimensions_autoDimensions,
1863
1891
  encodingForLine,
1864
1892
  pivotAdapter([
@@ -1873,17 +1901,6 @@ const lineAdvancedPipeline = [
1873
1901
  markStyle_markStyle,
1874
1902
  annotation_annotation
1875
1903
  ];
1876
- const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
1877
- const { advancedVSeed } = context;
1878
- if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
1879
- return ordinalPipe(spec, context);
1880
- };
1881
- const isLinearColor = (advancedVSeed)=>{
1882
- const { encoding, measures } = advancedVSeed;
1883
- const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
1884
- const { color } = encoding;
1885
- return color?.length === 1 && measureIdList.includes(color[0]);
1886
- };
1887
1904
  const initLine = (spec, context)=>{
1888
1905
  const result = {
1889
1906
  ...spec
@@ -3714,7 +3731,7 @@ const encodingForColumn = (advancedVSeed, context)=>{
3714
3731
  };
3715
3732
  const columnAdvancedPipeline = [
3716
3733
  initAdvancedVSeed_initAdvancedVSeed,
3717
- autoMeasures_autoMeasures,
3734
+ buildMeasures,
3718
3735
  autoDimensions_autoDimensions,
3719
3736
  encodingForColumn,
3720
3737
  pivotAdapter([
@@ -4163,7 +4180,7 @@ const registerColumn = ()=>{
4163
4180
  };
4164
4181
  const columnParallelAdvancedPipeline = [
4165
4182
  initAdvancedVSeed_initAdvancedVSeed,
4166
- autoMeasures_autoMeasures,
4183
+ buildMeasures,
4167
4184
  autoDimensions_autoDimensions,
4168
4185
  encodingForColumn,
4169
4186
  pivotAdapter([
@@ -4260,7 +4277,7 @@ const registerColumnParallel = ()=>{
4260
4277
  };
4261
4278
  const columnPercentAdvancedPipeline = [
4262
4279
  initAdvancedVSeed_initAdvancedVSeed,
4263
- autoMeasures_autoMeasures,
4280
+ buildMeasures,
4264
4281
  autoDimensions_autoDimensions,
4265
4282
  encodingForColumn,
4266
4283
  pivotAdapter([
@@ -4399,7 +4416,7 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4399
4416
  };
4400
4417
  const barAdvancedPipeline = [
4401
4418
  initAdvancedVSeed_initAdvancedVSeed,
4402
- autoMeasures_autoMeasures,
4419
+ buildMeasures,
4403
4420
  autoDimensions_autoDimensions,
4404
4421
  encodingForBar,
4405
4422
  pivotAdapter([
@@ -4752,7 +4769,7 @@ const registerBar = ()=>{
4752
4769
  };
4753
4770
  const barParallelAdvancedPipeline = [
4754
4771
  initAdvancedVSeed_initAdvancedVSeed,
4755
- autoMeasures_autoMeasures,
4772
+ buildMeasures,
4756
4773
  autoDimensions_autoDimensions,
4757
4774
  encodingForBar,
4758
4775
  pivotAdapter([
@@ -4848,7 +4865,7 @@ const registerBarParallel = ()=>{
4848
4865
  };
4849
4866
  const barPercentAdvancedPipeline = [
4850
4867
  initAdvancedVSeed_initAdvancedVSeed,
4851
- autoMeasures_autoMeasures,
4868
+ buildMeasures,
4852
4869
  autoDimensions_autoDimensions,
4853
4870
  encodingForBar,
4854
4871
  pivotAdapter([
@@ -4919,7 +4936,7 @@ const registerBarPercent = ()=>{
4919
4936
  };
4920
4937
  const areaAdvancedPipeline = [
4921
4938
  initAdvancedVSeed_initAdvancedVSeed,
4922
- autoMeasures_autoMeasures,
4939
+ buildMeasures,
4923
4940
  autoDimensions_autoDimensions,
4924
4941
  encodingForColumn,
4925
4942
  pivotAdapter([
@@ -5077,7 +5094,7 @@ const registerArea = ()=>{
5077
5094
  };
5078
5095
  const areaPercentAdvancedPipeline = [
5079
5096
  initAdvancedVSeed_initAdvancedVSeed,
5080
- autoMeasures_autoMeasures,
5097
+ buildMeasures,
5081
5098
  autoDimensions_autoDimensions,
5082
5099
  encodingForColumn,
5083
5100
  pivotAdapter([
@@ -5153,95 +5170,105 @@ const registerAreaPercent = ()=>{
5153
5170
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5154
5171
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5155
5172
  };
5156
- const autoScatterMeasures = (advancedVSeed, context)=>{
5157
- const result = {
5158
- ...advancedVSeed
5159
- };
5173
+ const buildMeasuresForScatter = (advancedVSeed, context)=>{
5160
5174
  const { vseed } = context;
5161
- const { dataset, scatterMeasures, measures } = vseed;
5162
- if (!dataset) throw new Error('dataset is required');
5163
- if (0 === dataset.length) return result;
5164
- if (scatterMeasures) {
5165
- result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5166
- return result;
5175
+ if (isMeasureTreeWithChildren(vseed)) {
5176
+ advancedVSeed.measures = vseed.measures;
5177
+ return advancedVSeed;
5167
5178
  }
5168
- if (measures && measureDepth(measures) > 1) {
5169
- result.measures = measures;
5170
- return result;
5179
+ if (isMeasureTreeWithParentId(vseed)) {
5180
+ advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
5181
+ return advancedVSeed;
5171
5182
  }
5172
- const top100dataset = dataset.slice(0, 100);
5173
- const sample = top100dataset.reduce((prev, cur)=>({
5174
- ...prev,
5175
- ...cur
5176
- }), {});
5177
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5178
- '',
5179
- null,
5180
- void 0
5181
- ].includes(key)).map((measure)=>({
5182
- id: measure,
5183
- alias: measure
5184
- }));
5185
- if (0 === newMeasures.length) result.measures = [];
5186
- else if (1 === newMeasures.length) result.measures = [
5187
- {
5188
- id: 'primary',
5189
- alias: 'primary',
5190
- children: newMeasures
5191
- }
5192
- ];
5193
- else if (newMeasures.length > 1) result.measures = [
5194
- {
5195
- id: 'primary',
5196
- alias: 'primary',
5197
- children: newMeasures.slice(0, 1)
5198
- },
5183
+ const basicMeasures = getBasicMeasures(vseed);
5184
+ const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
5185
+ advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5186
+ return advancedVSeed;
5187
+ };
5188
+ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
5189
+ const yMeasures = [];
5190
+ const xMeasures = [];
5191
+ for(let index = 0; index < basicMeasures.length; index++){
5192
+ const item = basicMeasures[index];
5193
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5194
+ item.encoding
5195
+ ];
5196
+ const isYAxis = encoding.includes('yAxis');
5197
+ const isXAxis = encoding.includes('xAxis');
5198
+ if (isYAxis) yMeasures.push(item);
5199
+ else if (isXAxis) xMeasures.push(item);
5200
+ else if (0 === index) yMeasures.push(item);
5201
+ else xMeasures.push(item);
5202
+ }
5203
+ return [
5199
5204
  {
5200
- id: 'secondary',
5201
- alias: 'secondary',
5202
- children: newMeasures.slice(1)
5205
+ id: 'scatterMeasures',
5206
+ xMeasures,
5207
+ yMeasures
5203
5208
  }
5204
5209
  ];
5205
- return result;
5206
5210
  };
5207
5211
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
5208
5212
  const measureTree = scatterMeasures.map((item, index)=>{
5209
- const { xMeasures, yMeasures } = item;
5213
+ const { id, xMeasures, yMeasures } = item;
5210
5214
  const groupChildren = [];
5211
- let id = '';
5215
+ let groupId = `${id}-`;
5212
5216
  if (xMeasures) {
5213
- const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
5217
+ const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
5214
5218
  xMeasures
5215
5219
  ];
5216
- const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
5217
- id += alias;
5220
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5221
+ groupId += alias;
5218
5222
  groupChildren.push({
5219
5223
  id: `${index}-x`,
5220
- alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
5221
- children: arrXMeasures
5224
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
5225
+ children: arrPrimaryMeasures
5222
5226
  });
5223
5227
  }
5224
5228
  if (yMeasures) {
5225
- const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
5229
+ const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
5226
5230
  yMeasures
5227
5231
  ];
5228
- const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
5229
- id += alias;
5232
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5233
+ groupId += alias;
5230
5234
  groupChildren.push({
5231
5235
  id: `${index}-y`,
5232
- alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
5233
- children: arrYMeasures
5236
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5237
+ children: arrSecondaryMeasures
5234
5238
  });
5235
5239
  }
5236
5240
  return {
5237
- id,
5238
- alias: id,
5241
+ id: groupId,
5242
+ alias: groupId,
5239
5243
  children: groupChildren
5240
5244
  };
5241
5245
  });
5242
5246
  if (1 === scatterMeasures.length) return measureTree[0].children || [];
5243
5247
  return measureTree;
5244
5248
  };
5249
+ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5250
+ const scatterMeasures = [];
5251
+ measures.forEach((item)=>{
5252
+ if (!item.parentId) return;
5253
+ if (!scatterMeasures.find((d)=>d.id === item.parentId)) scatterMeasures.push({
5254
+ id: item.parentId,
5255
+ yMeasures: [],
5256
+ xMeasures: []
5257
+ });
5258
+ const scatterChart = scatterMeasures.find((d)=>d.id === item.parentId);
5259
+ if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
5260
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5261
+ item.encoding
5262
+ ];
5263
+ const isY = encoding.includes('yAxis');
5264
+ const isX = encoding.includes('xAxis');
5265
+ if (isY) scatterChart.yMeasures.push(item);
5266
+ else if (isX) scatterChart.xMeasures.push(item);
5267
+ else if (!isY && !isX) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5268
+ else scatterChart.xMeasures.push(item);
5269
+ });
5270
+ return scatterMeasuresToMeasureTree(scatterMeasures);
5271
+ };
5245
5272
  const encodingForScatter = (advancedVSeed, context)=>{
5246
5273
  const { vseed } = context;
5247
5274
  const { dimensions } = advancedVSeed;
@@ -5297,7 +5324,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5297
5324
  if (xMeasures && xMeasures.children) {
5298
5325
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5299
5326
  foldMeasureValue: FoldXMeasureValue,
5300
- colorItemAsId: true
5327
+ colorItemAsId: true,
5328
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5301
5329
  });
5302
5330
  datasets.push(newDataset);
5303
5331
  foldInfoList.push(foldInfo);
@@ -5306,7 +5334,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5306
5334
  if (yMeasures && yMeasures.children) {
5307
5335
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5308
5336
  foldMeasureValue: FoldYMeasureValue,
5309
- colorItemAsId: true
5337
+ colorItemAsId: true,
5338
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5310
5339
  });
5311
5340
  datasets[0] = newDataset;
5312
5341
  foldInfoList.push(foldInfo);
@@ -5361,7 +5390,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5361
5390
  if (xMeasures && xMeasures.children) {
5362
5391
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5363
5392
  foldMeasureValue: `${FoldXMeasureValue}${index}`,
5364
- colorItemAsId: true
5393
+ colorItemAsId: true,
5394
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5365
5395
  });
5366
5396
  datasets.push(newDataset);
5367
5397
  foldInfoList.push(foldInfo);
@@ -5370,7 +5400,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5370
5400
  if (yMeasures && yMeasures.children) {
5371
5401
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5372
5402
  foldMeasureValue: `${FoldYMeasureValue}${index}`,
5373
- colorItemAsId: true
5403
+ colorItemAsId: true,
5404
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5374
5405
  });
5375
5406
  datasets.push(newDataset);
5376
5407
  foldInfoList.push(foldInfo);
@@ -5405,7 +5436,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5405
5436
  };
5406
5437
  const scatterAdvancedPipeline = [
5407
5438
  initAdvancedVSeed_initAdvancedVSeed,
5408
- autoScatterMeasures,
5439
+ buildMeasuresForScatter,
5409
5440
  autoDimensions_autoDimensions,
5410
5441
  encodingForScatter,
5411
5442
  pivotAdapter([
@@ -5552,68 +5583,55 @@ const registerScatter = ()=>{
5552
5583
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5553
5584
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5554
5585
  };
5555
- const autoDualMeasures = (advancedVSeed, context)=>{
5556
- const result = {
5557
- ...advancedVSeed
5558
- };
5586
+ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5559
5587
  const { vseed } = context;
5560
- const { dataset, dualMeasures, measures } = vseed;
5561
- if (!dataset) throw new Error('dataset is required');
5562
- if (0 === dataset.length) return result;
5563
- if (dualMeasures) {
5564
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
5565
- return result;
5588
+ if (isMeasureTreeWithChildren(vseed)) {
5589
+ advancedVSeed.measures = vseed.measures;
5590
+ return advancedVSeed;
5566
5591
  }
5567
- if (measures && measureDepth(measures) > 1) {
5568
- result.measures = measures;
5569
- return result;
5592
+ if (isMeasureTreeWithParentId(vseed)) {
5593
+ advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5594
+ return advancedVSeed;
5570
5595
  }
5571
- const top100dataset = dataset.slice(0, 100);
5572
- const sample = top100dataset.reduce((prev, cur)=>({
5573
- ...prev,
5574
- ...cur
5575
- }), {});
5576
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5577
- '',
5578
- null,
5579
- void 0
5580
- ].includes(key)).map((measure)=>({
5581
- id: measure,
5582
- alias: measure
5583
- }));
5584
- if (0 === newMeasures.length) result.measures = [];
5585
- else if (1 === newMeasures.length) result.measures = [
5586
- {
5587
- id: 'primary',
5588
- alias: 'primary',
5589
- children: newMeasures
5590
- }
5591
- ];
5592
- else if (newMeasures.length > 1) result.measures = [
5593
- {
5594
- id: 'primary',
5595
- alias: 'primary',
5596
- children: newMeasures.slice(0, 1)
5597
- },
5596
+ const basicMeasures = getBasicMeasures(vseed);
5597
+ const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
5598
+ advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
5599
+ return advancedVSeed;
5600
+ };
5601
+ const basicMeasuresToDualMeasures = (basicMeasures)=>{
5602
+ const primaryMeasures = [];
5603
+ const secondaryMeasures = [];
5604
+ for(let index = 0; index < basicMeasures.length; index++){
5605
+ const item = basicMeasures[index];
5606
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5607
+ item.encoding
5608
+ ];
5609
+ const isPrimaryYAxis = encoding.includes('primaryYAxis');
5610
+ const isSecondaryYAxis = encoding.includes('secondaryYAxis');
5611
+ if (isPrimaryYAxis) primaryMeasures.push(item);
5612
+ else if (isSecondaryYAxis) secondaryMeasures.push(item);
5613
+ else if (0 === index) primaryMeasures.push(item);
5614
+ else secondaryMeasures.push(item);
5615
+ }
5616
+ return [
5598
5617
  {
5599
- id: 'secondary',
5600
- alias: 'secondary',
5601
- children: newMeasures.slice(1)
5618
+ id: 'dualMeasures',
5619
+ primaryMeasures,
5620
+ secondaryMeasures
5602
5621
  }
5603
5622
  ];
5604
- return result;
5605
5623
  };
5606
5624
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
5607
5625
  const measureTree = dualMeasures.map((item, index)=>{
5608
- const { primaryMeasures, secondaryMeasures } = item;
5626
+ const { id, primaryMeasures, secondaryMeasures } = item;
5609
5627
  const groupChildren = [];
5610
- let id = '';
5628
+ let groupId = `${id}-`;
5611
5629
  if (primaryMeasures) {
5612
5630
  const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5613
5631
  primaryMeasures
5614
5632
  ];
5615
5633
  const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5616
- id += alias;
5634
+ groupId += alias;
5617
5635
  groupChildren.push({
5618
5636
  id: `${index}-primary`,
5619
5637
  alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5625,7 +5643,7 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5625
5643
  secondaryMeasures
5626
5644
  ];
5627
5645
  const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5628
- id += alias;
5646
+ groupId += alias;
5629
5647
  groupChildren.push({
5630
5648
  id: `${index}-secondary`,
5631
5649
  alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5633,14 +5651,37 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5633
5651
  });
5634
5652
  }
5635
5653
  return {
5636
- id,
5637
- alias: id,
5654
+ id: groupId,
5655
+ alias: groupId,
5638
5656
  children: groupChildren
5639
5657
  };
5640
5658
  });
5641
5659
  if (1 === dualMeasures.length) return measureTree[0].children || [];
5642
5660
  return measureTree;
5643
5661
  };
5662
+ const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
5663
+ const dualMeasures = [];
5664
+ measures.forEach((item)=>{
5665
+ if (!item.parentId) return;
5666
+ if (!dualMeasures.find((d)=>d.id === item.parentId)) dualMeasures.push({
5667
+ id: item.parentId,
5668
+ primaryMeasures: [],
5669
+ secondaryMeasures: []
5670
+ });
5671
+ const dualChart = dualMeasures.find((d)=>d.id === item.parentId);
5672
+ if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
5673
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5674
+ item.encoding
5675
+ ];
5676
+ const isPrimary = encoding.includes('primaryYAxis');
5677
+ const isSecondary = encoding.includes('secondaryYAxis');
5678
+ if (isPrimary) dualChart.primaryMeasures.push(item);
5679
+ else if (isSecondary) dualChart.secondaryMeasures.push(item);
5680
+ else if (!isPrimary && !isSecondary) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
5681
+ else dualChart.secondaryMeasures.push(item);
5682
+ });
5683
+ return dualMeasuresToMeasureTree(dualMeasures);
5684
+ };
5644
5685
  const encodingForDualAxis = (advancedVSeed, context)=>{
5645
5686
  const { vseed } = context;
5646
5687
  const { dimensions } = advancedVSeed;
@@ -5699,7 +5740,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5699
5740
  const secondaryMeasures = measures[1] || [];
5700
5741
  if (primaryMeasures && primaryMeasures.children) {
5701
5742
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5702
- foldMeasureValue: FoldPrimaryMeasureValue
5743
+ foldMeasureValue: FoldPrimaryMeasureValue,
5744
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5703
5745
  });
5704
5746
  datasets.push(newDataset);
5705
5747
  foldInfoList.push(foldInfo);
@@ -5707,7 +5749,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5707
5749
  }
5708
5750
  if (secondaryMeasures && secondaryMeasures.children) {
5709
5751
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5710
- foldMeasureValue: FoldSecondaryMeasureValue
5752
+ foldMeasureValue: FoldSecondaryMeasureValue,
5753
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5711
5754
  });
5712
5755
  datasets.push(newDataset);
5713
5756
  foldInfoList.push(foldInfo);
@@ -5761,7 +5804,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5761
5804
  const secondaryMeasures = measures[1] || [];
5762
5805
  if (primaryMeasures && primaryMeasures.children) {
5763
5806
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5764
- foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5807
+ foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
5808
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5765
5809
  });
5766
5810
  datasets.push(newDataset);
5767
5811
  foldInfoList.push(foldInfo);
@@ -5769,7 +5813,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5769
5813
  }
5770
5814
  if (secondaryMeasures && secondaryMeasures.children) {
5771
5815
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5772
- foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5816
+ foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
5817
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5773
5818
  });
5774
5819
  datasets.push(newDataset);
5775
5820
  foldInfoList.push(foldInfo);
@@ -5827,7 +5872,7 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5827
5872
  };
5828
5873
  const dualAxisAdvancedPipeline = [
5829
5874
  initAdvancedVSeed_initAdvancedVSeed,
5830
- autoDualMeasures,
5875
+ buildMeasuresForDualAxis,
5831
5876
  autoDimensions_autoDimensions,
5832
5877
  encodingForDualAxis,
5833
5878
  pivotAdapter([
@@ -5914,7 +5959,7 @@ const initDualAxisSecondary = (spec, context)=>{
5914
5959
  result.direction = 'vertical';
5915
5960
  result.xField = unfoldInfo.encodingX;
5916
5961
  if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5917
- result.seriesField = unfoldInfo.encodingColorId;
5962
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
5918
5963
  result.animation = true;
5919
5964
  return result;
5920
5965
  };
@@ -6540,6 +6585,37 @@ const yLinearSecondary = (spec, context)=>{
6540
6585
  ];
6541
6586
  return result;
6542
6587
  };
6588
+ const linearColorForDualAxis = (spec, context)=>{
6589
+ const result = {
6590
+ ...spec
6591
+ };
6592
+ const { advancedVSeed } = context;
6593
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
6594
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
6595
+ const baseConfig = advancedVSeed.config[chartType];
6596
+ if (!baseConfig || !baseConfig.color) return result;
6597
+ const { color } = baseConfig;
6598
+ const { colorScheme, linearColorScheme } = color;
6599
+ result.color = {
6600
+ type: 'linear',
6601
+ range: linearColorScheme || colorScheme || [],
6602
+ domain: [
6603
+ {
6604
+ dataId: `${id}-primary-dataset`,
6605
+ fields: [
6606
+ unfoldInfo.encodingColor
6607
+ ]
6608
+ },
6609
+ {
6610
+ dataId: `${id}-secondary-dataset`,
6611
+ fields: [
6612
+ unfoldInfo.encodingColor
6613
+ ]
6614
+ }
6615
+ ]
6616
+ };
6617
+ return result;
6618
+ };
6543
6619
  const dualAxis = [
6544
6620
  seriesDualAxis([
6545
6621
  initDualAxisPrimary,
@@ -6548,11 +6624,11 @@ const dualAxis = [
6548
6624
  labelPrimary,
6549
6625
  tooltipPrimary,
6550
6626
  progressive,
6551
- barStyle_barStyle,
6552
- pointStyle_pointStyle,
6627
+ colorBarStyleFill(barStyle_barStyle),
6628
+ colorPointStyleFill(pointStyle_pointStyle),
6553
6629
  pointStateDimensionHover,
6554
- lineStyle_lineStyle,
6555
- areaStyle_areaStyle
6630
+ colorLineStyleFill(lineStyle_lineStyle),
6631
+ colorAreaStyleFill(areaStyle_areaStyle)
6556
6632
  ], [
6557
6633
  initDualAxisSecondary,
6558
6634
  dualChartTypeSecondary,
@@ -6560,18 +6636,18 @@ const dualAxis = [
6560
6636
  labelSecondary,
6561
6637
  tooltipSecondary,
6562
6638
  progressive,
6563
- barStyle_barStyle,
6564
- pointStyle_pointStyle,
6639
+ colorBarStyleFill(barStyle_barStyle),
6640
+ colorPointStyleFill(pointStyle_pointStyle),
6565
6641
  pointStateDimensionHover,
6566
- lineStyle_lineStyle,
6567
- areaStyle_areaStyle
6642
+ colorLineStyleFill(lineStyle_lineStyle),
6643
+ colorAreaStyleFill(areaStyle_areaStyle)
6568
6644
  ]),
6569
6645
  xBand,
6570
6646
  yLinearPrimary,
6571
6647
  yLinearSecondary,
6572
- color_color,
6648
+ colorAdapter(color_color, linearColorForDualAxis),
6649
+ colorAdapter(discreteLegend, colorLegend),
6573
6650
  background_backgroundColor,
6574
- discreteLegend,
6575
6651
  verticalCrosshairRect,
6576
6652
  annotationPoint_annotationPoint,
6577
6653
  annotationVerticalLine_annotationVerticalLine,
@@ -6591,11 +6667,11 @@ const pivotDualAxis = [
6591
6667
  labelPrimary,
6592
6668
  tooltipPrimary,
6593
6669
  progressive,
6594
- barStyle_barStyle,
6595
- pointStyle_pointStyle,
6670
+ colorBarStyleFill(barStyle_barStyle),
6671
+ colorPointStyleFill(pointStyle_pointStyle),
6596
6672
  pointStateDimensionHover,
6597
- lineStyle_lineStyle,
6598
- areaStyle_areaStyle
6673
+ colorLineStyleFill(lineStyle_lineStyle),
6674
+ colorAreaStyleFill(areaStyle_areaStyle)
6599
6675
  ], [
6600
6676
  initDualAxisSecondary,
6601
6677
  dualChartTypeSecondary,
@@ -6603,16 +6679,16 @@ const pivotDualAxis = [
6603
6679
  labelSecondary,
6604
6680
  tooltipSecondary,
6605
6681
  progressive,
6606
- barStyle_barStyle,
6607
- pointStyle_pointStyle,
6682
+ colorBarStyleFill(barStyle_barStyle),
6683
+ colorPointStyleFill(pointStyle_pointStyle),
6608
6684
  pointStateDimensionHover,
6609
- lineStyle_lineStyle,
6610
- areaStyle_areaStyle
6685
+ colorLineStyleFill(lineStyle_lineStyle),
6686
+ colorAreaStyleFill(areaStyle_areaStyle)
6611
6687
  ]),
6612
6688
  xBand,
6613
6689
  yLinearPrimary,
6614
6690
  yLinearSecondary,
6615
- color_color,
6691
+ colorAdapter(color_color, linearColor),
6616
6692
  background_backgroundColor,
6617
6693
  verticalCrosshairRect,
6618
6694
  annotationPoint_annotationPoint,
@@ -6622,7 +6698,7 @@ const pivotDualAxis = [
6622
6698
  ]),
6623
6699
  pivotRowDimensions,
6624
6700
  pivotColumnDimensions,
6625
- pivotDiscreteLegend
6701
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6626
6702
  ];
6627
6703
  const dualAxisSpecPipeline = [
6628
6704
  pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
@@ -6657,7 +6733,7 @@ const encodingForPie = (advancedVSeed, context)=>{
6657
6733
  };
6658
6734
  const pieAdvancedPipeline = [
6659
6735
  initAdvancedVSeed_initAdvancedVSeed,
6660
- autoMeasures_autoMeasures,
6736
+ buildMeasures,
6661
6737
  autoDimensions_autoDimensions,
6662
6738
  encodingForPie,
6663
6739
  pivotAdapter([
@@ -6748,7 +6824,7 @@ const registerPie = ()=>{
6748
6824
  };
6749
6825
  const donutAdvancedPipeline = [
6750
6826
  initAdvancedVSeed_initAdvancedVSeed,
6751
- autoMeasures_autoMeasures,
6827
+ buildMeasures,
6752
6828
  autoDimensions_autoDimensions,
6753
6829
  encodingForPie,
6754
6830
  pivotAdapter([
@@ -6880,7 +6956,7 @@ const encodingForRose = (advancedVSeed, context)=>{
6880
6956
  };
6881
6957
  const roseAdvancedPipeline = [
6882
6958
  initAdvancedVSeed_initAdvancedVSeed,
6883
- autoMeasures_autoMeasures,
6959
+ buildMeasures,
6884
6960
  autoDimensions_autoDimensions,
6885
6961
  encodingForRose,
6886
6962
  pivotAdapter([
@@ -7049,7 +7125,7 @@ const registerRose = ()=>{
7049
7125
  };
7050
7126
  const roseParallelAdvancedPipeline = [
7051
7127
  initAdvancedVSeed_initAdvancedVSeed,
7052
- autoMeasures_autoMeasures,
7128
+ buildMeasures,
7053
7129
  autoDimensions_autoDimensions,
7054
7130
  encodingForRose,
7055
7131
  pivotAdapter([
@@ -7198,7 +7274,7 @@ const encodingForRadar = (advancedVSeed, context)=>{
7198
7274
  };
7199
7275
  const radarAdvancedPipeline = [
7200
7276
  initAdvancedVSeed_initAdvancedVSeed,
7201
- autoMeasures_autoMeasures,
7277
+ buildMeasures,
7202
7278
  autoDimensions_autoDimensions,
7203
7279
  encodingForRadar,
7204
7280
  pivotAdapter([
@@ -7360,7 +7436,7 @@ const encodingForFunnel = (advancedVSeed, context)=>{
7360
7436
  };
7361
7437
  const funnelAdvancedPipeline = [
7362
7438
  initAdvancedVSeed_initAdvancedVSeed,
7363
- autoMeasures_autoMeasures,
7439
+ buildMeasures,
7364
7440
  autoDimensions_autoDimensions,
7365
7441
  encodingForFunnel,
7366
7442
  pivotAdapter([
@@ -7491,7 +7567,7 @@ const encodingForHeatmap = (advancedVSeed, context)=>{
7491
7567
  };
7492
7568
  const heatmapAdvancedPipeline = [
7493
7569
  initAdvancedVSeed_initAdvancedVSeed,
7494
- autoMeasures_autoMeasures,
7570
+ buildMeasures,
7495
7571
  autoDimensions_autoDimensions,
7496
7572
  encodingForHeatmap,
7497
7573
  pivotAdapter([
@@ -8359,7 +8435,20 @@ const zMeasure = external_zod_namespaceObject.z.object({
8359
8435
  id: external_zod_namespaceObject.z.string(),
8360
8436
  alias: external_zod_namespaceObject.z.string().optional(),
8361
8437
  autoFormat: external_zod_namespaceObject.z.boolean().default(true),
8362
- format: zNumFormat["default"]({})
8438
+ format: zNumFormat["default"]({}),
8439
+ encoding: external_zod_namespaceObject.z["enum"]([
8440
+ 'primaryYAxis',
8441
+ 'secondaryYAxis',
8442
+ 'xAxis',
8443
+ 'yAxis',
8444
+ 'angle',
8445
+ 'radius',
8446
+ 'size',
8447
+ 'color',
8448
+ 'label',
8449
+ 'tooltip'
8450
+ ]).optional(),
8451
+ parentId: external_zod_namespaceObject.z.string().optional()
8363
8452
  });
8364
8453
  const zMeasureGroup = external_zod_namespaceObject.z.object({
8365
8454
  id: external_zod_namespaceObject.z.string(),
@@ -8421,7 +8510,6 @@ const zEncoding = external_zod_namespaceObject.z.object({
8421
8510
  column: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8422
8511
  group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
8423
8512
  });
8424
- const zEncodings = external_zod_namespaceObject.z.array(zEncoding);
8425
8513
  const zXBandAxis = external_zod_namespaceObject.z.object({
8426
8514
  visible: external_zod_namespaceObject.z.boolean().default(true).nullish(),
8427
8515
  labelAutoHide: external_zod_namespaceObject.z.boolean().default(true).nullish(),
@@ -9564,7 +9652,6 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
9564
9652
  dimensions: zDimensionTree,
9565
9653
  measures: zMeasureTree,
9566
9654
  encoding: zEncoding,
9567
- encodings: zEncodings,
9568
9655
  config: zConfig,
9569
9656
  analysis: zAnalysis,
9570
9657
  theme: zTheme,
@@ -9736,7 +9823,6 @@ exports.zDualChartType = __webpack_exports__.zDualChartType;
9736
9823
  exports.zDualMeasure = __webpack_exports__.zDualMeasure;
9737
9824
  exports.zDualMeasures = __webpack_exports__.zDualMeasures;
9738
9825
  exports.zEncoding = __webpack_exports__.zEncoding;
9739
- exports.zEncodings = __webpack_exports__.zEncodings;
9740
9826
  exports.zFoldInfo = __webpack_exports__.zFoldInfo;
9741
9827
  exports.zFunnel = __webpack_exports__.zFunnel;
9742
9828
  exports.zFunnelConfig = __webpack_exports__.zFunnelConfig;
@@ -9947,7 +10033,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
9947
10033
  "zDualMeasure",
9948
10034
  "zDualMeasures",
9949
10035
  "zEncoding",
9950
- "zEncodings",
9951
10036
  "zFoldInfo",
9952
10037
  "zFunnel",
9953
10038
  "zFunnelConfig",