@visactor/vseed 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/builder/builder/builder.d.ts +4 -2
  2. package/dist/dataReshape/foldMeasures.d.ts +2 -2
  3. package/dist/index.cjs +520 -370
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.js +533 -383
  6. package/dist/index.js.map +1 -1
  7. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +1 -0
  8. package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +2 -0
  9. package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +1 -0
  10. package/dist/types/advancedVSeed.d.ts +16 -5
  11. package/dist/types/chartType/area/zArea.d.ts +16 -5
  12. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +16 -5
  13. package/dist/types/chartType/bar/zBar.d.ts +16 -5
  14. package/dist/types/chartType/barParallel/zBarParallel.d.ts +16 -5
  15. package/dist/types/chartType/barPercent/zBarPercent.d.ts +16 -5
  16. package/dist/types/chartType/column/zColumn.d.ts +16 -5
  17. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +16 -5
  18. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +16 -5
  19. package/dist/types/chartType/donut/zDonut.d.ts +16 -5
  20. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +36 -25
  21. package/dist/types/chartType/funnel/zFunnel.d.ts +16 -5
  22. package/dist/types/chartType/heatmap/zHeatmap.d.ts +16 -5
  23. package/dist/types/chartType/line/zLine.d.ts +16 -5
  24. package/dist/types/chartType/pie/zPie.d.ts +16 -5
  25. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +16 -5
  26. package/dist/types/chartType/radar/zRadar.d.ts +16 -5
  27. package/dist/types/chartType/rose/zRose.d.ts +16 -5
  28. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +16 -5
  29. package/dist/types/chartType/scatter/zScatter.d.ts +36 -25
  30. package/dist/types/chartType/table/zTable.d.ts +16 -5
  31. package/dist/types/properties/dimensions/dimensions.d.ts +16 -0
  32. package/dist/types/properties/dimensions/zDimensions.d.ts +33 -0
  33. package/dist/types/properties/measures/zDualMeasures.d.ts +40 -40
  34. package/dist/types/properties/measures/zMeasures.d.ts +15 -15
  35. package/dist/types/properties/measures/zScatterMeasures.d.ts +40 -40
  36. package/dist/types/zVseed.d.ts +360 -140
  37. package/dist/umd/index.js +534 -370
  38. package/dist/umd/index.js.map +1 -1
  39. package/package.json +1 -1
package/dist/umd/index.js CHANGED
@@ -1445,6 +1445,57 @@
1445
1445
  locale: locale || 'zh-CN'
1446
1446
  };
1447
1447
  };
1448
+ const ORIGINAL_DATA = '__OriginalData__';
1449
+ const Separator = '-';
1450
+ const FoldMeasureName = '__MeaName__';
1451
+ const FoldMeasureId = '__MeaId__';
1452
+ const FoldMeasureValue = '__MeaValue__';
1453
+ const MeasureName = FoldMeasureName;
1454
+ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1455
+ const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1456
+ const FoldXMeasureValue = '__MeaXValue__';
1457
+ const FoldYMeasureValue = '__MeaYValue__';
1458
+ const XEncoding = '__Dim_X__';
1459
+ const YEncoding = '__Dim_Y__';
1460
+ const AngleEncoding = '__Dim_Angle__';
1461
+ const DetailEncoding = '__Dim_Detail__';
1462
+ const ColorEncoding = '__Dim_Color__';
1463
+ const ColorIdEncoding = '__Dim_ColorId__';
1464
+ const getBasicDimensions = (vseed)=>{
1465
+ const { dimensions, dataset } = vseed;
1466
+ const MeaName = {
1467
+ id: MeasureName,
1468
+ alias: intl.i18n`指标名称`,
1469
+ encoding: 'detail'
1470
+ };
1471
+ if (!dataset) throw new Error('dataset is required');
1472
+ if (0 === dataset.length) return [];
1473
+ if (dimensions) {
1474
+ const basicDimensions = dimensions.map((dim)=>({
1475
+ location: 'dimension',
1476
+ ...dim
1477
+ }));
1478
+ if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
1479
+ basicDimensions.push(MeaName);
1480
+ return basicDimensions;
1481
+ }
1482
+ const top100dataset = dataset.slice(0, 100);
1483
+ const sample = top100dataset.reduce((prev, cur)=>({
1484
+ ...prev,
1485
+ ...cur
1486
+ }), {});
1487
+ const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1488
+ '',
1489
+ null,
1490
+ void 0
1491
+ ].includes(key)).map((dim)=>({
1492
+ id: dim,
1493
+ alias: dim,
1494
+ location: 'dimension'
1495
+ }));
1496
+ basicDimensions.push(MeaName);
1497
+ return basicDimensions;
1498
+ };
1448
1499
  const getBasicMeasures = (vseed)=>{
1449
1500
  const { dataset, measures } = vseed;
1450
1501
  if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
@@ -1478,6 +1529,54 @@
1478
1529
  if (!measures) return false;
1479
1530
  return measures.some((measure)=>'parentId' in measure);
1480
1531
  };
1532
+ const encodingForLine = (advancedVSeed, context)=>{
1533
+ const { vseed } = context;
1534
+ const { measures: vseedMeasures = [] } = vseed;
1535
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
1536
+ const dimensions = getBasicDimensions(vseed);
1537
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1538
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
1539
+ const encoding = {};
1540
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1541
+ else generateDefaultDimensionEncoding(dimensions, encoding);
1542
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1543
+ else generateDefaultMeasureEncoding(measures, encoding);
1544
+ return {
1545
+ ...advancedVSeed,
1546
+ encoding
1547
+ };
1548
+ };
1549
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
1550
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
1551
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1552
+ };
1553
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1554
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1555
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
1556
+ encoding.x = uniqueDimIds.slice(0, 1);
1557
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
1558
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
1559
+ encoding.tooltip = uniqueDimIds;
1560
+ encoding.label = [];
1561
+ encoding.row = [];
1562
+ encoding.column = [];
1563
+ };
1564
+ const generateMeasureEncoding = (measures, encoding)=>{
1565
+ encoding.tooltip = measures.map((item)=>item.id);
1566
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1567
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1568
+ if (color.length > 0) encoding.color = color;
1569
+ };
1570
+ const generateDimensionEncoding = (dimensions, encoding)=>{
1571
+ encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1572
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1573
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1574
+ if (0 === encoding.x.length) encoding.x = [
1575
+ dimensions[0].id
1576
+ ];
1577
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
1578
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
1579
+ };
1481
1580
  const measureDepth = (measures = [])=>{
1482
1581
  if (!measures) return 0;
1483
1582
  let depth = 1;
@@ -1498,7 +1597,7 @@
1498
1597
  if (isVTable(vseed)) return false;
1499
1598
  if (isMeasureTreeWithParentId(vseed)) {
1500
1599
  const parentIds = vseed.measures?.map((measure)=>measure.parentId);
1501
- return parentIds && parentIds.length > 1;
1600
+ return parentIds && chunk_QJLMYOTX_i(parentIds).length > 1;
1502
1601
  }
1503
1602
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1504
1603
  const { dimensions = [] } = vseed;
@@ -1569,22 +1668,6 @@
1569
1668
  }
1570
1669
  ];
1571
1670
  };
1572
- const ORIGINAL_DATA = '__OriginalData__';
1573
- const Separator = '-';
1574
- const FoldMeasureName = '__MeaName__';
1575
- const FoldMeasureId = '__MeaId__';
1576
- const FoldMeasureValue = '__MeaValue__';
1577
- const MeasureName = FoldMeasureName;
1578
- const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1579
- const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1580
- const FoldXMeasureValue = '__MeaXValue__';
1581
- const FoldYMeasureValue = '__MeaYValue__';
1582
- const XEncoding = '__Dim_X__';
1583
- const YEncoding = '__Dim_Y__';
1584
- const AngleEncoding = '__Dim_Angle__';
1585
- const DetailEncoding = '__Dim_Detail__';
1586
- const ColorEncoding = '__Dim_Color__';
1587
- const ColorIdEncoding = '__Dim_ColorId__';
1588
1671
  const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1589
1672
  const result = {
1590
1673
  ...advancedVSeed
@@ -1624,51 +1707,26 @@
1624
1707
  result.dimensions.push(MeaName);
1625
1708
  return result;
1626
1709
  };
1627
- const encodingForLine = (advancedVSeed, context)=>{
1628
- const { vseed } = context;
1629
- const { dimensions } = advancedVSeed;
1630
- if (!dimensions) return advancedVSeed;
1631
- const encoding = vseed.encoding;
1632
- if (encoding) {
1633
- const x = encoding.x || [
1634
- dimensions[0].id
1635
- ];
1636
- const color = encoding.color || [
1637
- (dimensions[1] || dimensions[0]).id
1638
- ];
1639
- const detail = encoding.detail || [];
1640
- const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
1641
- return {
1642
- ...advancedVSeed,
1643
- encoding: {
1644
- ...encoding,
1645
- x,
1646
- color,
1647
- detail: mergedDetail
1648
- }
1649
- };
1650
- }
1651
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1652
- const mergedEncoding = {
1653
- x: dimensions.slice(0, 1).map((item)=>item.id),
1654
- color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1655
- detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1656
- tooltip: dimensions.map((item)=>item.id),
1657
- label: [],
1658
- row: [],
1659
- column: []
1660
- };
1661
- return {
1662
- ...advancedVSeed,
1663
- encoding: mergedEncoding
1664
- };
1665
- };
1666
1710
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1667
1711
  const { vseed } = context;
1668
1712
  const usePivotChart = isPivotChart(vseed);
1669
1713
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1670
1714
  return execPipeline(pipeline, context, advancedVSeed);
1671
1715
  };
1716
+ function T(...e) {
1717
+ return chunk_LFJW7BOT_y(chunk_7ZI6JRPB_y, e);
1718
+ }
1719
+ function chunk_7ZI6JRPB_y(e) {
1720
+ let u = e, n = new Set;
1721
+ return (t, i, d)=>{
1722
+ let r = u(t, i, d);
1723
+ return n.has(r) ? chunk_ANXBDSUI_s : (n.add(r), {
1724
+ done: !1,
1725
+ hasNext: !0,
1726
+ next: t
1727
+ });
1728
+ };
1729
+ }
1672
1730
  function chunk_AIG3BDKO_i(...e) {
1673
1731
  return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
1674
1732
  }
@@ -1690,7 +1748,7 @@
1690
1748
  for (let r of e)delete o[r];
1691
1749
  return o;
1692
1750
  }
1693
- const foldMeasures = (dataset, measures, encoding, options)=>{
1751
+ const foldMeasures = (dataset, measures, options)=>{
1694
1752
  const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1695
1753
  const foldInfo = {
1696
1754
  measureId,
@@ -1791,7 +1849,7 @@
1791
1849
  };
1792
1850
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1793
1851
  const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
1794
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, encoding, {
1852
+ const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, {
1795
1853
  measureId: foldMeasureId,
1796
1854
  measureName: foldMeasureName,
1797
1855
  measureValue: foldMeasureValue,
@@ -1835,7 +1893,7 @@
1835
1893
  const { dimensions, measures, encoding } = advancedVSeed;
1836
1894
  if (!measures || !dimensions || !dataset || !encoding) return result;
1837
1895
  if (0 === measures.length) throw new Error('measures can not be empty');
1838
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1896
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(findAllMeasures(measures), (item)=>item.id), encoding, {
1839
1897
  colorMeasureId: getColorMeasureId(advancedVSeed)
1840
1898
  });
1841
1899
  return {
@@ -1872,7 +1930,7 @@
1872
1930
  const measures = measureGroup.children;
1873
1931
  if (!measures) return;
1874
1932
  const groupId = measureGroup.id;
1875
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1933
+ const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (item)=>item.id), T(measures, (item)=>item.id), encoding, {
1876
1934
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1877
1935
  colorMeasureId: getColorMeasureId(advancedVSeed)
1878
1936
  });
@@ -2090,9 +2148,9 @@
2090
2148
  };
2091
2149
  const lineAdvancedPipeline = [
2092
2150
  initAdvancedVSeed_initAdvancedVSeed,
2151
+ encodingForLine,
2093
2152
  buildMeasures,
2094
2153
  autoDimensions_autoDimensions,
2095
- encodingForLine,
2096
2154
  pivotAdapter([
2097
2155
  reshapeWithEncoding
2098
2156
  ], [
@@ -3912,51 +3970,58 @@
3912
3970
  };
3913
3971
  const encodingForColumn = (advancedVSeed, context)=>{
3914
3972
  const { vseed } = context;
3915
- const { dimensions } = advancedVSeed;
3916
- if (!dimensions) return advancedVSeed;
3917
- const encoding = vseed.encoding;
3918
- if (encoding) {
3919
- const x = encoding.x || [
3920
- dimensions[0].id
3921
- ];
3922
- const color = encoding.color || [
3923
- (dimensions[1] || dimensions[0]).id
3924
- ];
3925
- const detail = encoding.detail || [];
3926
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
3927
- ...color,
3928
- ...detail
3929
- ]) : detail;
3930
- return {
3931
- ...advancedVSeed,
3932
- encoding: {
3933
- ...encoding,
3934
- x,
3935
- color,
3936
- detail: mergedDetail
3937
- }
3938
- };
3939
- }
3940
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
3941
- const mergedEncoding = {
3942
- x: dimensions.slice(0, 1).map((item)=>item.id),
3943
- color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
3944
- detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
3945
- tooltip: dimensions.map((item)=>item.id),
3946
- label: [],
3947
- row: [],
3948
- column: []
3949
- };
3973
+ const { measures: vseedMeasures = [] } = vseed;
3974
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
3975
+ const dimensions = getBasicDimensions(vseed);
3976
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
3977
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
3978
+ const encoding = {};
3979
+ if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
3980
+ else column_generateDefaultDimensionEncoding(dimensions, encoding);
3981
+ if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
3982
+ else column_generateDefaultMeasureEncoding(measures, encoding);
3950
3983
  return {
3951
3984
  ...advancedVSeed,
3952
- encoding: mergedEncoding
3985
+ encoding
3953
3986
  };
3954
3987
  };
3988
+ const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3989
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
3990
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3991
+ };
3992
+ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3993
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
3994
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
3995
+ encoding.x = uniqueDimIds.slice(0, 1);
3996
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3997
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3998
+ encoding.tooltip = uniqueDimIds;
3999
+ encoding.label = [];
4000
+ encoding.row = [];
4001
+ encoding.column = [];
4002
+ };
4003
+ const column_generateMeasureEncoding = (measures, encoding)=>{
4004
+ encoding.tooltip = measures.map((item)=>item.id);
4005
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4006
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4007
+ if (color.length > 0) encoding.color = color;
4008
+ return encoding;
4009
+ };
4010
+ const column_generateDimensionEncoding = (dimensions, encoding)=>{
4011
+ encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4012
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4013
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4014
+ if (0 === encoding.x.length) encoding.x = [
4015
+ dimensions[0].id
4016
+ ];
4017
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
4018
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
4019
+ };
3955
4020
  const columnAdvancedPipeline = [
3956
4021
  initAdvancedVSeed_initAdvancedVSeed,
4022
+ encodingForColumn,
3957
4023
  buildMeasures,
3958
4024
  autoDimensions_autoDimensions,
3959
- encodingForColumn,
3960
4025
  pivotAdapter([
3961
4026
  reshapeWithEncoding
3962
4027
  ], [
@@ -4403,9 +4468,9 @@
4403
4468
  };
4404
4469
  const columnParallelAdvancedPipeline = [
4405
4470
  initAdvancedVSeed_initAdvancedVSeed,
4471
+ encodingForColumn,
4406
4472
  buildMeasures,
4407
4473
  autoDimensions_autoDimensions,
4408
- encodingForColumn,
4409
4474
  pivotAdapter([
4410
4475
  reshapeWithEncoding
4411
4476
  ], [
@@ -4500,9 +4565,9 @@
4500
4565
  };
4501
4566
  const columnPercentAdvancedPipeline = [
4502
4567
  initAdvancedVSeed_initAdvancedVSeed,
4568
+ encodingForColumn,
4503
4569
  buildMeasures,
4504
4570
  autoDimensions_autoDimensions,
4505
- encodingForColumn,
4506
4571
  pivotAdapter([
4507
4572
  reshapeWithEncoding
4508
4573
  ], [
@@ -4581,46 +4646,53 @@
4581
4646
  };
4582
4647
  const encodingForBar = (advancedVSeed, context)=>{
4583
4648
  const { vseed } = context;
4584
- const { dimensions } = advancedVSeed;
4585
- if (!dimensions) return advancedVSeed;
4586
- const encoding = vseed.encoding;
4587
- if (encoding) {
4588
- const y = encoding.y || [
4589
- dimensions[0].id
4590
- ];
4591
- const color = encoding.color || [
4592
- (dimensions[1] || dimensions[0]).id
4593
- ];
4594
- const detail = encoding.detail || [];
4595
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
4596
- ...color,
4597
- ...detail
4598
- ]) : detail;
4599
- return {
4600
- ...advancedVSeed,
4601
- encoding: {
4602
- ...encoding,
4603
- y,
4604
- color,
4605
- detail: mergedDetail
4606
- }
4607
- };
4608
- }
4609
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4610
- const mergedEncoding = {
4611
- y: dimensions.slice(0, 1).map((item)=>item.id),
4612
- color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4613
- detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4614
- tooltip: dimensions.map((item)=>item.id),
4615
- label: [],
4616
- row: [],
4617
- column: []
4618
- };
4649
+ const { measures: vseedMeasures = [] } = vseed;
4650
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
4651
+ const dimensions = getBasicDimensions(vseed);
4652
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
4653
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
4654
+ const encoding = {};
4655
+ if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
4656
+ else bar_generateDefaultDimensionEncoding(dimensions, encoding);
4657
+ if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
4658
+ else bar_generateDefaultMeasureEncoding(measures, encoding);
4619
4659
  return {
4620
4660
  ...advancedVSeed,
4621
- encoding: mergedEncoding
4661
+ encoding
4622
4662
  };
4623
4663
  };
4664
+ const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4665
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
4666
+ encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4667
+ };
4668
+ const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4669
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4670
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
4671
+ encoding.y = uniqueDimIds.slice(0, 1);
4672
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4673
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4674
+ encoding.tooltip = uniqueDimIds;
4675
+ encoding.label = [];
4676
+ encoding.row = [];
4677
+ encoding.column = [];
4678
+ };
4679
+ const bar_generateMeasureEncoding = (measures, encoding)=>{
4680
+ encoding.tooltip = measures.map((item)=>item.id);
4681
+ encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4682
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4683
+ if (color.length > 0) encoding.color = color;
4684
+ return encoding;
4685
+ };
4686
+ const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4687
+ encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4688
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4689
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4690
+ if (0 === encoding.y.length) encoding.y = [
4691
+ dimensions[0].id
4692
+ ];
4693
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4694
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4695
+ };
4624
4696
  const sortYBandAxis = (advancedVSeed, context)=>{
4625
4697
  const result = {
4626
4698
  ...advancedVSeed
@@ -4639,9 +4711,9 @@
4639
4711
  };
4640
4712
  const barAdvancedPipeline = [
4641
4713
  initAdvancedVSeed_initAdvancedVSeed,
4714
+ encodingForBar,
4642
4715
  buildMeasures,
4643
4716
  autoDimensions_autoDimensions,
4644
- encodingForBar,
4645
4717
  pivotAdapter([
4646
4718
  reshapeWithEncoding
4647
4719
  ], [
@@ -5159,9 +5231,9 @@
5159
5231
  };
5160
5232
  const areaAdvancedPipeline = [
5161
5233
  initAdvancedVSeed_initAdvancedVSeed,
5234
+ encodingForColumn,
5162
5235
  buildMeasures,
5163
5236
  autoDimensions_autoDimensions,
5164
- encodingForColumn,
5165
5237
  pivotAdapter([
5166
5238
  reshapeWithEncoding
5167
5239
  ], [
@@ -5317,9 +5389,9 @@
5317
5389
  };
5318
5390
  const areaPercentAdvancedPipeline = [
5319
5391
  initAdvancedVSeed_initAdvancedVSeed,
5392
+ encodingForColumn,
5320
5393
  buildMeasures,
5321
5394
  autoDimensions_autoDimensions,
5322
- encodingForColumn,
5323
5395
  pivotAdapter([
5324
5396
  reshapeWithEncoding
5325
5397
  ], [
@@ -5393,6 +5465,49 @@
5393
5465
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5394
5466
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5395
5467
  };
5468
+ const encodingForScatter = (advancedVSeed, context)=>{
5469
+ const { vseed } = context;
5470
+ const { measures: vseedMeasures = [] } = vseed;
5471
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5472
+ const dimensions = getBasicDimensions(vseed);
5473
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5474
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
5475
+ const encoding = {};
5476
+ if (hasDimensionEncoding) scatter_generateDimensionEncoding(dimensions, encoding);
5477
+ else scatter_generateDefaultDimensionEncoding(dimensions, encoding);
5478
+ if (hasMeasureEncoding) scatter_generateMeasureEncoding(measures, encoding);
5479
+ else scatter_generateDefaultMeasureEncoding(measures, encoding);
5480
+ return {
5481
+ ...advancedVSeed,
5482
+ encoding
5483
+ };
5484
+ };
5485
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5486
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
5487
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5488
+ };
5489
+ const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5490
+ const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5491
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureName.map((d)=>d.id));
5492
+ encoding.color = uniqueDimIds.slice(0);
5493
+ encoding.detail = uniqueDimIds.slice(0);
5494
+ encoding.tooltip = uniqueDimIds;
5495
+ encoding.label = [];
5496
+ encoding.row = [];
5497
+ encoding.column = [];
5498
+ };
5499
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5500
+ encoding.tooltip = measures.map((item)=>item.id);
5501
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5502
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5503
+ if (color.length > 0) encoding.color = color;
5504
+ };
5505
+ const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5506
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5507
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5508
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5509
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5510
+ };
5396
5511
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
5397
5512
  const { vseed } = context;
5398
5513
  if (isMeasureTreeWithChildren(vseed)) {
@@ -5483,52 +5598,16 @@
5483
5598
  const encoding = Array.isArray(item.encoding) ? item.encoding : [
5484
5599
  item.encoding
5485
5600
  ];
5486
- const isY = encoding.includes('yAxis');
5487
5601
  const isX = encoding.includes('xAxis');
5602
+ const isY = encoding.includes('yAxis');
5603
+ const isEmpty = !encoding.length;
5488
5604
  if (isY) scatterChart.yMeasures.push(item);
5489
5605
  else if (isX) scatterChart.xMeasures.push(item);
5490
- else if (!isY && !isX) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5606
+ else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5491
5607
  else scatterChart.xMeasures.push(item);
5492
5608
  });
5493
5609
  return scatterMeasuresToMeasureTree(scatterMeasures);
5494
5610
  };
5495
- const encodingForScatter = (advancedVSeed, context)=>{
5496
- const { vseed } = context;
5497
- const { dimensions } = advancedVSeed;
5498
- if (!dimensions) return advancedVSeed;
5499
- const encoding = vseed.encoding;
5500
- if (encoding) {
5501
- const detail = encoding.detail || [];
5502
- const color = encoding.color || [
5503
- (dimensions[1] || dimensions[0]).id
5504
- ];
5505
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
5506
- ...color,
5507
- ...detail
5508
- ]) : detail;
5509
- return {
5510
- ...advancedVSeed,
5511
- encoding: {
5512
- ...encoding,
5513
- color,
5514
- detail: mergedDetail
5515
- }
5516
- };
5517
- }
5518
- const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5519
- const mergedEncoding = {
5520
- color: dimensions.slice(0).map((item)=>item.id),
5521
- detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
5522
- tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
5523
- label: [],
5524
- row: [],
5525
- column: []
5526
- };
5527
- return {
5528
- ...advancedVSeed,
5529
- encoding: mergedEncoding
5530
- };
5531
- };
5532
5611
  const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5533
5612
  const result = {
5534
5613
  ...advancedVSeed
@@ -5545,7 +5624,7 @@
5545
5624
  const xMeasures = measures[0];
5546
5625
  const yMeasures = measures[1] || xMeasures;
5547
5626
  if (xMeasures && xMeasures.children) {
5548
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5627
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (d)=>d.id), T(xMeasures.children, (d)=>d.id), encoding, {
5549
5628
  foldMeasureValue: FoldXMeasureValue,
5550
5629
  colorItemAsId: true,
5551
5630
  colorMeasureId: getColorMeasureId(advancedVSeed)
@@ -5555,7 +5634,7 @@
5555
5634
  unfoldInfoList.push(unfoldInfo);
5556
5635
  }
5557
5636
  if (yMeasures && yMeasures.children) {
5558
- const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5637
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], T(dimensions, (d)=>d.id), T(yMeasures.children, (d)=>d.id), encoding, {
5559
5638
  foldMeasureValue: FoldYMeasureValue,
5560
5639
  colorItemAsId: true,
5561
5640
  colorMeasureId: getColorMeasureId(advancedVSeed)
@@ -5659,9 +5738,9 @@
5659
5738
  };
5660
5739
  const scatterAdvancedPipeline = [
5661
5740
  initAdvancedVSeed_initAdvancedVSeed,
5741
+ encodingForScatter,
5662
5742
  buildMeasuresForScatter,
5663
5743
  autoDimensions_autoDimensions,
5664
- encodingForScatter,
5665
5744
  pivotAdapter([
5666
5745
  reshapeWithScatterEncoding
5667
5746
  ], [
@@ -5806,6 +5885,55 @@
5806
5885
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5807
5886
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5808
5887
  };
5888
+ const encodingForDualAxis = (advancedVSeed, context)=>{
5889
+ const { vseed } = context;
5890
+ const { measures: vseedMeasures = [] } = vseed;
5891
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5892
+ const dimensions = getBasicDimensions(vseed);
5893
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5894
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
5895
+ const encoding = {};
5896
+ if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
5897
+ else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
5898
+ if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
5899
+ else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
5900
+ return {
5901
+ ...advancedVSeed,
5902
+ encoding
5903
+ };
5904
+ };
5905
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5906
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
5907
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5908
+ };
5909
+ const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5910
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
5911
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
5912
+ encoding.x = uniqueDimIds.slice(0, 1);
5913
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5914
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5915
+ encoding.tooltip = uniqueDimIds;
5916
+ encoding.label = [];
5917
+ encoding.row = [];
5918
+ encoding.column = [];
5919
+ };
5920
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5921
+ encoding.tooltip = measures.map((item)=>item.id);
5922
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5923
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5924
+ if (color.length > 0) encoding.color = color;
5925
+ return encoding;
5926
+ };
5927
+ const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5928
+ encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5929
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5930
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5931
+ if (0 === encoding.x.length) encoding.x = [
5932
+ dimensions[0].id
5933
+ ];
5934
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5935
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5936
+ };
5809
5937
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5810
5938
  const { vseed } = context;
5811
5939
  if (isMeasureTreeWithChildren(vseed)) {
@@ -5898,54 +6026,14 @@
5898
6026
  ];
5899
6027
  const isPrimary = encoding.includes('primaryYAxis');
5900
6028
  const isSecondary = encoding.includes('secondaryYAxis');
6029
+ const isEmpty = !item.encoding;
5901
6030
  if (isPrimary) dualChart.primaryMeasures.push(item);
5902
6031
  else if (isSecondary) dualChart.secondaryMeasures.push(item);
5903
- else if (!isPrimary && !isSecondary) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
6032
+ else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
5904
6033
  else dualChart.secondaryMeasures.push(item);
5905
6034
  });
5906
6035
  return dualMeasuresToMeasureTree(dualMeasures);
5907
6036
  };
5908
- const encodingForDualAxis = (advancedVSeed, context)=>{
5909
- const { vseed } = context;
5910
- const { dimensions } = advancedVSeed;
5911
- if (!dimensions) return advancedVSeed;
5912
- const encoding = vseed.encoding;
5913
- if (encoding) {
5914
- const x = encoding.x || [
5915
- dimensions[0].id
5916
- ];
5917
- const color = encoding.color || [
5918
- (dimensions[1] || dimensions[0]).id
5919
- ];
5920
- const detail = encoding.detail || [];
5921
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
5922
- ...color,
5923
- ...detail
5924
- ]) : detail;
5925
- return {
5926
- ...advancedVSeed,
5927
- encoding: {
5928
- ...encoding,
5929
- x,
5930
- color,
5931
- detail: mergedDetail
5932
- }
5933
- };
5934
- }
5935
- const mergedEncoding = {
5936
- x: dimensions.slice(0, 1).map((item)=>item.id),
5937
- color: dimensions.slice(1).map((item)=>item.id),
5938
- detail: dimensions.slice(1).map((item)=>item.id),
5939
- tooltip: dimensions.map((item)=>item.id),
5940
- label: [],
5941
- row: [],
5942
- column: []
5943
- };
5944
- return {
5945
- ...advancedVSeed,
5946
- encoding: mergedEncoding
5947
- };
5948
- };
5949
6037
  const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5950
6038
  const result = {
5951
6039
  ...advancedVSeed
@@ -6095,9 +6183,9 @@
6095
6183
  };
6096
6184
  const dualAxisAdvancedPipeline = [
6097
6185
  initAdvancedVSeed_initAdvancedVSeed,
6186
+ encodingForDualAxis,
6098
6187
  buildMeasuresForDualAxis,
6099
6188
  autoDimensions_autoDimensions,
6100
- encodingForDualAxis,
6101
6189
  pivotAdapter([
6102
6190
  reshapeWithDualEncoding
6103
6191
  ], [
@@ -6932,33 +7020,51 @@
6932
7020
  };
6933
7021
  const encodingForPie = (advancedVSeed, context)=>{
6934
7022
  const { vseed } = context;
6935
- const { dimensions } = advancedVSeed;
6936
- if (!dimensions) return advancedVSeed;
6937
- const encoding = vseed.encoding;
6938
- if (encoding) return {
6939
- ...advancedVSeed,
6940
- encoding: {
6941
- ...encoding
6942
- }
6943
- };
6944
- const mergedEncoding = {
6945
- color: dimensions.slice(0).map((item)=>item.id),
6946
- detail: dimensions.slice(0).map((item)=>item.id),
6947
- tooltip: dimensions.map((item)=>item.id),
6948
- label: [],
6949
- row: [],
6950
- column: []
6951
- };
7023
+ const { measures: vseedMeasures = [] } = vseed;
7024
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7025
+ const dimensions = getBasicDimensions(vseed);
7026
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7027
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
7028
+ const encoding = {};
7029
+ if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding);
7030
+ else pie_generateDefaultDimensionEncoding(dimensions, encoding);
7031
+ if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
7032
+ else pie_generateDefaultMeasureEncoding(measures, encoding);
6952
7033
  return {
6953
7034
  ...advancedVSeed,
6954
- encoding: mergedEncoding
6955
- };
7035
+ encoding
7036
+ };
7037
+ };
7038
+ const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
7039
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7040
+ encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7041
+ };
7042
+ const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7043
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7044
+ encoding.color = uniqueDimIds.slice(0);
7045
+ encoding.detail = uniqueDimIds.slice(0);
7046
+ encoding.tooltip = uniqueDimIds;
7047
+ encoding.label = [];
7048
+ encoding.row = [];
7049
+ encoding.column = [];
7050
+ };
7051
+ const pie_generateMeasureEncoding = (measures, encoding)=>{
7052
+ encoding.tooltip = measures.map((item)=>item.id);
7053
+ encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7054
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7055
+ if (color.length > 0) encoding.color = color;
7056
+ };
7057
+ const pie_generateDimensionEncoding = (dimensions, encoding)=>{
7058
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7059
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7060
+ if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
7061
+ if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
6956
7062
  };
6957
7063
  const pieAdvancedPipeline = [
6958
7064
  initAdvancedVSeed_initAdvancedVSeed,
7065
+ encodingForPie,
6959
7066
  buildMeasures,
6960
7067
  autoDimensions_autoDimensions,
6961
- encodingForPie,
6962
7068
  pivotAdapter([
6963
7069
  reshapeWithEncoding
6964
7070
  ], [
@@ -7137,51 +7243,57 @@
7137
7243
  };
7138
7244
  const encodingForRose = (advancedVSeed, context)=>{
7139
7245
  const { vseed } = context;
7140
- const { dimensions } = advancedVSeed;
7141
- if (!dimensions) return advancedVSeed;
7142
- const encoding = vseed.encoding;
7143
- if (encoding) {
7144
- const angle = encoding.angle || [
7145
- dimensions[0].id
7146
- ];
7147
- const color = encoding.color || [
7148
- (dimensions[1] || dimensions[0]).id
7149
- ];
7150
- const detail = encoding.detail || [];
7151
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
7152
- ...color,
7153
- ...detail
7154
- ]) : detail;
7155
- return {
7156
- ...advancedVSeed,
7157
- encoding: {
7158
- ...encoding,
7159
- angle,
7160
- color,
7161
- detail: mergedDetail
7162
- }
7163
- };
7164
- }
7165
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7166
- const mergedEncoding = {
7167
- angle: dimensions.slice(0, 1).map((item)=>item.id),
7168
- color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7169
- detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7170
- tooltip: dimensions.map((item)=>item.id),
7171
- label: [],
7172
- row: [],
7173
- column: []
7174
- };
7246
+ const { measures: vseedMeasures = [] } = vseed;
7247
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7248
+ const dimensions = getBasicDimensions(vseed);
7249
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7250
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
7251
+ const encoding = {};
7252
+ if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
7253
+ else rose_generateDefaultDimensionEncoding(dimensions, encoding);
7254
+ if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
7255
+ else rose_generateDefaultMeasureEncoding(measures, encoding);
7175
7256
  return {
7176
7257
  ...advancedVSeed,
7177
- encoding: mergedEncoding
7258
+ encoding
7178
7259
  };
7179
7260
  };
7261
+ const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7262
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7263
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7264
+ };
7265
+ const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7266
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7267
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7268
+ encoding.angle = uniqueDimIds.slice(0, 1);
7269
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7270
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7271
+ encoding.tooltip = uniqueDimIds;
7272
+ encoding.label = [];
7273
+ encoding.row = [];
7274
+ encoding.column = [];
7275
+ };
7276
+ const rose_generateMeasureEncoding = (measures, encoding)=>{
7277
+ encoding.tooltip = measures.map((item)=>item.id);
7278
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7279
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7280
+ if (color.length > 0) encoding.color = color;
7281
+ };
7282
+ const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7283
+ encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7284
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7285
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7286
+ if (0 === encoding.angle.length) encoding.angle = [
7287
+ dimensions[0].id
7288
+ ];
7289
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7290
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7291
+ };
7180
7292
  const roseAdvancedPipeline = [
7181
7293
  initAdvancedVSeed_initAdvancedVSeed,
7294
+ encodingForRose,
7182
7295
  buildMeasures,
7183
7296
  autoDimensions_autoDimensions,
7184
- encodingForRose,
7185
7297
  pivotAdapter([
7186
7298
  reshapeWithEncoding
7187
7299
  ], [
@@ -7348,9 +7460,9 @@
7348
7460
  };
7349
7461
  const roseParallelAdvancedPipeline = [
7350
7462
  initAdvancedVSeed_initAdvancedVSeed,
7463
+ encodingForRose,
7351
7464
  buildMeasures,
7352
7465
  autoDimensions_autoDimensions,
7353
- encodingForRose,
7354
7466
  pivotAdapter([
7355
7467
  reshapeWithEncoding
7356
7468
  ], [
@@ -7456,50 +7568,57 @@
7456
7568
  };
7457
7569
  const encodingForRadar = (advancedVSeed, context)=>{
7458
7570
  const { vseed } = context;
7459
- const { dimensions } = advancedVSeed;
7460
- if (!dimensions) return advancedVSeed;
7461
- const encoding = vseed.encoding;
7462
- if (encoding) {
7463
- const angle = encoding.angle || [
7464
- dimensions[0].id
7465
- ];
7466
- const color = encoding.color || [
7467
- (dimensions[1] || dimensions[0]).id
7468
- ];
7469
- const detail = encoding.detail || [];
7470
- const mergedDetail = 0 === detail.length ? chunk_QJLMYOTX_i([
7471
- ...color,
7472
- ...detail
7473
- ]) : detail;
7474
- return {
7475
- ...advancedVSeed,
7476
- encoding: {
7477
- ...encoding,
7478
- angle,
7479
- color,
7480
- detail: mergedDetail
7481
- }
7482
- };
7483
- }
7484
- const mergedEncoding = {
7485
- angle: dimensions.slice(0, 1).map((item)=>item.id),
7486
- color: dimensions.slice(1).map((item)=>item.id),
7487
- detail: dimensions.slice(1).map((item)=>item.id),
7488
- tooltip: dimensions.map((item)=>item.id),
7489
- label: [],
7490
- row: [],
7491
- column: []
7492
- };
7571
+ const { measures: vseedMeasures = [] } = vseed;
7572
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7573
+ const dimensions = getBasicDimensions(vseed);
7574
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7575
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
7576
+ const encoding = {};
7577
+ if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
7578
+ else radar_generateDefaultDimensionEncoding(dimensions, encoding);
7579
+ if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
7580
+ else radar_generateDefaultMeasureEncoding(measures, encoding);
7493
7581
  return {
7494
7582
  ...advancedVSeed,
7495
- encoding: mergedEncoding
7583
+ encoding
7496
7584
  };
7497
7585
  };
7586
+ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7587
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7588
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7589
+ };
7590
+ const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7591
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7592
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7593
+ encoding.angle = uniqueDimIds.slice(0, 1);
7594
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7595
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7596
+ encoding.tooltip = uniqueDimIds;
7597
+ encoding.label = [];
7598
+ encoding.row = [];
7599
+ encoding.column = [];
7600
+ };
7601
+ const radar_generateMeasureEncoding = (measures, encoding)=>{
7602
+ encoding.tooltip = measures.map((item)=>item.id);
7603
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7604
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7605
+ if (color.length > 0) encoding.color = color;
7606
+ };
7607
+ const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7608
+ encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7609
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7610
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7611
+ if (0 === encoding.angle.length) encoding.angle = [
7612
+ dimensions[0].id
7613
+ ];
7614
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7615
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7616
+ };
7498
7617
  const radarAdvancedPipeline = [
7499
7618
  initAdvancedVSeed_initAdvancedVSeed,
7619
+ encodingForRadar,
7500
7620
  buildMeasures,
7501
7621
  autoDimensions_autoDimensions,
7502
- encodingForRadar,
7503
7622
  pivotAdapter([
7504
7623
  reshapeWithEncoding
7505
7624
  ], [
@@ -7635,33 +7754,51 @@
7635
7754
  };
7636
7755
  const encodingForFunnel = (advancedVSeed, context)=>{
7637
7756
  const { vseed } = context;
7638
- const { dimensions } = advancedVSeed;
7639
- if (!dimensions) return advancedVSeed;
7640
- const encoding = vseed.encoding;
7641
- if (encoding) return {
7642
- ...advancedVSeed,
7643
- encoding: {
7644
- ...encoding
7645
- }
7646
- };
7647
- const mergedEncoding = {
7648
- color: dimensions.slice(0).map((item)=>item.id),
7649
- detail: dimensions.slice(0).map((item)=>item.id),
7650
- tooltip: dimensions.map((item)=>item.id),
7651
- label: [],
7652
- row: [],
7653
- column: []
7654
- };
7757
+ const { measures: vseedMeasures = [] } = vseed;
7758
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7759
+ const dimensions = getBasicDimensions(vseed);
7760
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7761
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
7762
+ const encoding = {};
7763
+ if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
7764
+ else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
7765
+ if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
7766
+ else funnel_generateDefaultMeasureEncoding(measures, encoding);
7655
7767
  return {
7656
7768
  ...advancedVSeed,
7657
- encoding: mergedEncoding
7658
- };
7769
+ encoding
7770
+ };
7771
+ };
7772
+ const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7773
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7774
+ encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7775
+ };
7776
+ const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7777
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7778
+ encoding.color = uniqueDimIds.slice(0);
7779
+ encoding.detail = uniqueDimIds.slice(0);
7780
+ encoding.tooltip = uniqueDimIds;
7781
+ encoding.label = [];
7782
+ encoding.row = [];
7783
+ encoding.column = [];
7784
+ };
7785
+ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7786
+ encoding.tooltip = measures.map((item)=>item.id);
7787
+ encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7788
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7789
+ if (color.length > 0) encoding.color = color;
7790
+ };
7791
+ const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7792
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7793
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7794
+ if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
7795
+ if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7659
7796
  };
7660
7797
  const funnelAdvancedPipeline = [
7661
7798
  initAdvancedVSeed_initAdvancedVSeed,
7799
+ encodingForFunnel,
7662
7800
  buildMeasures,
7663
7801
  autoDimensions_autoDimensions,
7664
- encodingForFunnel,
7665
7802
  pivotAdapter([
7666
7803
  reshapeWithEncoding
7667
7804
  ], [
@@ -7754,45 +7891,61 @@
7754
7891
  };
7755
7892
  const encodingForHeatmap = (advancedVSeed, context)=>{
7756
7893
  const { vseed } = context;
7757
- const { dimensions } = advancedVSeed;
7758
- if (!dimensions) return advancedVSeed;
7759
- const encoding = vseed.encoding;
7760
- if (encoding) {
7761
- const x = encoding.x || [
7762
- dimensions[0].id
7763
- ];
7764
- const y = encoding.y || [
7765
- (dimensions[1] || dimensions[0]).id
7766
- ];
7767
- return {
7768
- ...advancedVSeed,
7769
- encoding: {
7770
- x,
7771
- y,
7772
- ...encoding
7773
- }
7774
- };
7775
- }
7776
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7777
- const mergedEncoding = {
7778
- x: dimensions.slice(0, 1).map((item)=>item.id),
7779
- y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7780
- color: dimensions.slice(0).map((item)=>item.id),
7781
- tooltip: dimensions.map((item)=>item.id),
7782
- label: [],
7783
- row: [],
7784
- column: []
7785
- };
7894
+ const { measures: vseedMeasures = [] } = vseed;
7895
+ const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7896
+ const dimensions = getBasicDimensions(vseed);
7897
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7898
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
7899
+ const encoding = {};
7900
+ if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
7901
+ else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
7902
+ if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
7903
+ else heatmap_generateDefaultMeasureEncoding(measures, encoding);
7786
7904
  return {
7787
7905
  ...advancedVSeed,
7788
- encoding: mergedEncoding
7906
+ encoding
7789
7907
  };
7790
7908
  };
7909
+ const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7910
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7911
+ encoding.color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7912
+ };
7913
+ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7914
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7915
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7916
+ encoding.x = uniqueDimIds.slice(0, 1);
7917
+ encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7918
+ encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7919
+ encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7920
+ encoding.tooltip = uniqueDimIds;
7921
+ encoding.label = [];
7922
+ encoding.row = [];
7923
+ encoding.column = [];
7924
+ };
7925
+ const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7926
+ encoding.tooltip = measures.map((item)=>item.id);
7927
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7928
+ if (color.length > 0) encoding.color = color;
7929
+ return encoding;
7930
+ };
7931
+ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7932
+ encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
7933
+ encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
7934
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7935
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7936
+ if (0 === encoding.x.length) encoding.x = [
7937
+ dimensions[0].id
7938
+ ];
7939
+ if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
7940
+ else encoding.y = dimensions.slice(0).map((item)=>item.id);
7941
+ if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7942
+ if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7943
+ };
7791
7944
  const heatmapAdvancedPipeline = [
7792
7945
  initAdvancedVSeed_initAdvancedVSeed,
7946
+ encodingForHeatmap,
7793
7947
  buildMeasures,
7794
7948
  autoDimensions_autoDimensions,
7795
- encodingForHeatmap,
7796
7949
  pivotAdapter([
7797
7950
  reshapeWithEncoding
7798
7951
  ], [
@@ -11895,7 +12048,18 @@
11895
12048
  'dimension',
11896
12049
  'rowDimension',
11897
12050
  'columnDimension'
11898
- ]).default('dimension')
12051
+ ]).default('dimension'),
12052
+ encoding: schemas_enum([
12053
+ 'xAxis',
12054
+ 'yAxis',
12055
+ 'angle',
12056
+ 'color',
12057
+ 'detail',
12058
+ 'tooltip',
12059
+ 'label',
12060
+ 'row',
12061
+ 'column'
12062
+ ]).optional()
11899
12063
  });
11900
12064
  const zDimensionGroup = schemas_object({
11901
12065
  id: schemas_string(),