@visactor/vseed 0.4.6 → 0.4.7

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 (125) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/prepare.js +87 -153
  4. package/dist/esm/builder/builder/prepare.js.map +1 -1
  5. package/dist/esm/dataSelector/selector.d.ts +2 -2
  6. package/dist/esm/dataSelector/selector.js.map +1 -1
  7. package/dist/esm/i18n/i18nData.js +28 -0
  8. package/dist/esm/i18n/i18nData.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  10. package/dist/esm/pipeline/advanced/table/pipes/config/pivotTableConfig.js +2 -1
  11. package/dist/esm/pipeline/advanced/table/pipes/config/pivotTableConfig.js.map +1 -1
  12. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  13. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +6 -2
  14. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  15. package/dist/esm/pipeline/spec/table/pipeline/table.js +2 -1
  16. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  17. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.d.ts +8 -0
  18. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.js +76 -0
  19. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.js.map +1 -0
  20. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +1 -27
  21. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  22. package/dist/esm/pipeline/spec/table/pipes/columns/index.d.ts +1 -0
  23. package/dist/esm/pipeline/spec/table/pipes/columns/index.js +1 -0
  24. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +1 -27
  25. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  26. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +12 -2
  27. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  28. package/dist/esm/pipeline/spec/table/pipes/columns/utils.d.ts +15 -0
  29. package/dist/esm/pipeline/spec/table/pipes/columns/utils.js +35 -0
  30. package/dist/esm/pipeline/spec/table/pipes/columns/utils.js.map +1 -0
  31. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +39 -4
  32. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  33. package/dist/esm/types/advancedVSeed.d.ts +2 -1
  34. package/dist/esm/types/advancedVSeed.js +3 -2
  35. package/dist/esm/types/advancedVSeed.js.map +1 -1
  36. package/dist/esm/types/chartType/area/zArea.d.ts +113 -8
  37. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +113 -8
  38. package/dist/esm/types/chartType/bar/zBar.d.ts +97 -4
  39. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +97 -4
  40. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +97 -4
  41. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +89 -2
  42. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +81 -0
  43. package/dist/esm/types/chartType/column/zColumn.d.ts +97 -4
  44. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +97 -4
  45. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +97 -4
  46. package/dist/esm/types/chartType/donut/zDonut.d.ts +81 -0
  47. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +121 -10
  48. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +81 -0
  49. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +81 -0
  50. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +97 -4
  51. package/dist/esm/types/chartType/line/zLine.d.ts +105 -6
  52. package/dist/esm/types/chartType/pie/zPie.d.ts +81 -0
  53. package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +6 -1
  54. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +12 -0
  55. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +2 -1
  56. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  57. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +97 -4
  58. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +97 -4
  59. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +81 -0
  60. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +105 -6
  61. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +81 -0
  62. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +97 -4
  63. package/dist/esm/types/chartType/radar/zRadar.d.ts +81 -0
  64. package/dist/esm/types/chartType/rose/zRose.d.ts +81 -0
  65. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +81 -0
  66. package/dist/esm/types/chartType/scatter/zScatter.d.ts +97 -4
  67. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +81 -0
  68. package/dist/esm/types/chartType/table/table.d.ts +11 -1
  69. package/dist/esm/types/chartType/table/zTable.d.ts +7 -0
  70. package/dist/esm/types/chartType/table/zTable.js +2 -1
  71. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  72. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +81 -0
  73. package/dist/esm/types/dataSelector/selector.d.ts +53 -29
  74. package/dist/esm/types/dataSelector/selector.js +1 -1
  75. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  76. package/dist/esm/types/properties/aggregation/aggregation.d.ts +9 -0
  77. package/dist/esm/types/properties/aggregation/aggregation.js +0 -0
  78. package/dist/esm/types/properties/aggregation/index.d.ts +2 -0
  79. package/dist/esm/types/properties/aggregation/index.js +2 -0
  80. package/dist/esm/types/properties/aggregation/zAggregation.d.ts +8 -0
  81. package/dist/esm/types/properties/aggregation/zAggregation.js +11 -0
  82. package/dist/esm/types/properties/aggregation/zAggregation.js.map +1 -0
  83. package/dist/esm/types/properties/annotation/annotation.d.ts +8 -2
  84. package/dist/esm/types/properties/annotation/zAnnotationPoint.d.ts +4 -1
  85. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +8 -2
  86. package/dist/esm/types/properties/config/area.d.ts +170 -2
  87. package/dist/esm/types/properties/config/bar.d.ts +255 -3
  88. package/dist/esm/types/properties/config/boxplot.d.ts +85 -1
  89. package/dist/esm/types/properties/config/circlePacking.d.ts +81 -0
  90. package/dist/esm/types/properties/config/column.d.ts +255 -3
  91. package/dist/esm/types/properties/config/config.d.ts +2425 -19
  92. package/dist/esm/types/properties/config/dualAxis.d.ts +85 -1
  93. package/dist/esm/types/properties/config/funnel.d.ts +81 -0
  94. package/dist/esm/types/properties/config/heatmap.d.ts +81 -0
  95. package/dist/esm/types/properties/config/histogram.d.ts +85 -1
  96. package/dist/esm/types/properties/config/label/label.d.ts +18 -1
  97. package/dist/esm/types/properties/config/label/zLabel.d.ts +81 -0
  98. package/dist/esm/types/properties/config/label/zLabel.js +3 -2
  99. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  100. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +81 -0
  101. package/dist/esm/types/properties/config/line.d.ts +85 -1
  102. package/dist/esm/types/properties/config/pie.d.ts +243 -0
  103. package/dist/esm/types/properties/config/race.d.ts +510 -6
  104. package/dist/esm/types/properties/config/rose.d.ts +162 -0
  105. package/dist/esm/types/properties/config/scatter.d.ts +85 -1
  106. package/dist/esm/types/properties/config/sunburst.d.ts +81 -0
  107. package/dist/esm/types/properties/config/treeMap.d.ts +81 -0
  108. package/dist/esm/types/properties/index.d.ts +2 -0
  109. package/dist/esm/types/properties/index.js +2 -0
  110. package/dist/esm/types/properties/markStyle/barStyle.d.ts +4 -1
  111. package/dist/esm/types/properties/markStyle/lineStyle.d.ts +4 -1
  112. package/dist/esm/types/properties/markStyle/markStyle.d.ts +32 -8
  113. package/dist/esm/types/properties/markStyle/pointStyle.d.ts +4 -1
  114. package/dist/esm/types/properties/markStyle/zAreaStyle.d.ts +4 -1
  115. package/dist/esm/types/properties/theme/customTheme.d.ts +4850 -38
  116. package/dist/esm/types/properties/totals/index.d.ts +2 -0
  117. package/dist/esm/types/properties/totals/index.js +2 -0
  118. package/dist/esm/types/properties/totals/totals.d.ts +34 -0
  119. package/dist/esm/types/properties/totals/totals.js +0 -0
  120. package/dist/esm/types/properties/totals/zTotals.d.ts +18 -0
  121. package/dist/esm/types/properties/totals/zTotals.js +13 -0
  122. package/dist/esm/types/properties/totals/zTotals.js.map +1 -0
  123. package/dist/umd/index.js +291 -211
  124. package/dist/umd/index.js.map +1 -1
  125. package/package.json +1 -1
package/dist/umd/index.js CHANGED
@@ -305,6 +305,7 @@
305
305
  zPieLabel: ()=>zPieLabel,
306
306
  zUnfoldInfo: ()=>zUnfoldInfo,
307
307
  zRadarConfig: ()=>zRadarConfig,
308
+ zPivotTableTotals: ()=>zPivotTableTotals,
308
309
  a: ()=>i18n_a,
309
310
  createNumFormatter: ()=>createNumFormatter,
310
311
  HAS_BUILTIN_UTILS: ()=>HAS_BUILTIN_UTILS,
@@ -324,6 +325,7 @@
324
325
  DetailEncoding: ()=>DetailEncoding,
325
326
  isPivot: ()=>chatType_isPivot,
326
327
  raceScatterAdvancedPipeline: ()=>raceScatterAdvancedPipeline,
328
+ zRowOrColumnTotalConfig: ()=>zRowOrColumnTotalConfig,
327
329
  zPlayer: ()=>zPlayer,
328
330
  zPointStyle: ()=>zPointStyle,
329
331
  zDimension: ()=>zDimension,
@@ -349,6 +351,7 @@
349
351
  zBoxPlot: ()=>zBoxPlot,
350
352
  zRaceScatter: ()=>zRaceScatter,
351
353
  registerBarParallel: ()=>registerBarParallel,
354
+ zTotalType: ()=>zTotalType,
352
355
  pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
353
356
  DUAL_AXIS_LABEL_Z_INDEX: ()=>1002,
354
357
  MeasureEncodingEnum: ()=>MeasureEncodingEnum,
@@ -429,6 +432,34 @@
429
432
  下边界: {
430
433
  'en-US': 'Lower Whisker',
431
434
  'zh-CN': '下边界'
435
+ },
436
+ 总计: {
437
+ 'en-US': 'Total',
438
+ 'zh-CN': '总计'
439
+ },
440
+ 小计: {
441
+ 'en-US': 'Sub Total',
442
+ 'zh-CN': '小计'
443
+ },
444
+ 合计: {
445
+ 'en-US': 'Total',
446
+ 'zh-CN': '合计'
447
+ },
448
+ 平均: {
449
+ 'en-US': 'Average',
450
+ 'zh-CN': '平均'
451
+ },
452
+ 最大值: {
453
+ 'en-US': 'Max',
454
+ 'zh-CN': '最大值'
455
+ },
456
+ 最小值: {
457
+ 'en-US': 'Min',
458
+ 'zh-CN': '最小值'
459
+ },
460
+ 计数: {
461
+ 'en-US': 'Count',
462
+ 'zh-CN': '计数'
432
463
  }
433
464
  };
434
465
  class i18n_Intl {
@@ -1805,82 +1836,93 @@ self.R = R;
1805
1836
  }
1806
1837
  return defaultSelector ? selector_selector(vchartDatum, defaultSelector) : false;
1807
1838
  };
1839
+ const dynamicFilterConfig = {
1840
+ table: [
1841
+ 'bodyCellStyle'
1842
+ ],
1843
+ pivotTable: [
1844
+ 'bodyCellStyle'
1845
+ ],
1846
+ bar: [
1847
+ 'barStyle',
1848
+ 'annotationPoint',
1849
+ 'annotationVerticalLine',
1850
+ 'label'
1851
+ ],
1852
+ barParallel: [
1853
+ 'barStyle',
1854
+ 'annotationPoint',
1855
+ 'annotationVerticalLine',
1856
+ 'label'
1857
+ ],
1858
+ barPercent: [
1859
+ 'barStyle',
1860
+ 'annotationPoint',
1861
+ 'annotationVerticalLine',
1862
+ 'label'
1863
+ ],
1864
+ column: [
1865
+ 'barStyle',
1866
+ 'annotationPoint',
1867
+ 'annotationHorizontalLine',
1868
+ 'label'
1869
+ ],
1870
+ columnParallel: [
1871
+ 'barStyle',
1872
+ 'annotationPoint',
1873
+ 'annotationHorizontalLine',
1874
+ 'label'
1875
+ ],
1876
+ columnPercent: [
1877
+ 'barStyle',
1878
+ 'annotationPoint',
1879
+ 'annotationHorizontalLine',
1880
+ 'label'
1881
+ ],
1882
+ line: [
1883
+ 'lineStyle',
1884
+ 'pointStyle',
1885
+ 'annotationPoint',
1886
+ 'annotationHorizontalLine',
1887
+ 'label'
1888
+ ],
1889
+ area: [
1890
+ 'lineStyle',
1891
+ 'pointStyle',
1892
+ 'annotationPoint',
1893
+ 'annotationHorizontalLine',
1894
+ 'label'
1895
+ ],
1896
+ areaPercent: [
1897
+ 'lineStyle',
1898
+ 'pointStyle',
1899
+ 'annotationPoint',
1900
+ 'annotationHorizontalLine',
1901
+ 'label'
1902
+ ],
1903
+ dualAxis: [
1904
+ 'barStyle',
1905
+ 'lineStyle',
1906
+ 'pointStyle',
1907
+ 'annotationPoint',
1908
+ 'annotationHorizontalLine',
1909
+ 'label'
1910
+ ],
1911
+ scatter: [
1912
+ 'pointStyle',
1913
+ 'annotationPoint',
1914
+ 'annotationHorizontalLine',
1915
+ 'annotationVerticalLine',
1916
+ 'label'
1917
+ ],
1918
+ histogram: [
1919
+ 'annotationHorizontalLine'
1920
+ ],
1921
+ boxPlot: [
1922
+ 'annotationHorizontalLine'
1923
+ ]
1924
+ };
1808
1925
  const generateDynamicFilterKeyPaths = ()=>{
1809
- const dynamicFilterConfig = {
1810
- table: [
1811
- 'bodyCellStyle'
1812
- ],
1813
- pivotTable: [
1814
- 'bodyCellStyle'
1815
- ],
1816
- bar: [
1817
- 'barStyle',
1818
- 'annotationPoint',
1819
- 'annotationVerticalLine'
1820
- ],
1821
- barParallel: [
1822
- 'barStyle',
1823
- 'annotationPoint',
1824
- 'annotationVerticalLine'
1825
- ],
1826
- barPercent: [
1827
- 'barStyle',
1828
- 'annotationPoint',
1829
- 'annotationVerticalLine'
1830
- ],
1831
- column: [
1832
- 'barStyle',
1833
- 'annotationPoint',
1834
- 'annotationHorizontalLine'
1835
- ],
1836
- columnParallel: [
1837
- 'barStyle',
1838
- 'annotationPoint',
1839
- 'annotationHorizontalLine'
1840
- ],
1841
- columnPercent: [
1842
- 'barStyle',
1843
- 'annotationPoint',
1844
- 'annotationHorizontalLine'
1845
- ],
1846
- line: [
1847
- 'lineStyle',
1848
- 'pointStyle',
1849
- 'annotationPoint',
1850
- 'annotationHorizontalLine'
1851
- ],
1852
- area: [
1853
- 'lineStyle',
1854
- 'pointStyle',
1855
- 'annotationPoint',
1856
- 'annotationHorizontalLine'
1857
- ],
1858
- areaPercent: [
1859
- 'lineStyle',
1860
- 'pointStyle',
1861
- 'annotationPoint',
1862
- 'annotationHorizontalLine'
1863
- ],
1864
- dualAxis: [
1865
- 'barStyle',
1866
- 'lineStyle',
1867
- 'pointStyle',
1868
- 'annotationPoint',
1869
- 'annotationHorizontalLine'
1870
- ],
1871
- scatter: [
1872
- 'pointStyle',
1873
- 'annotationPoint',
1874
- 'annotationHorizontalLine',
1875
- 'annotationVerticalLine'
1876
- ],
1877
- histogram: [
1878
- 'annotationHorizontalLine'
1879
- ],
1880
- boxPlot: [
1881
- 'annotationHorizontalLine'
1882
- ]
1883
- };
1884
1926
  const result = {};
1885
1927
  for (const [chartType, baseKeyPaths] of Object.entries(dynamicFilterConfig))result[chartType] = baseKeyPaths.flatMap((basePath)=>[
1886
1928
  `${basePath}[].dynamicFilter`,
@@ -1889,84 +1931,7 @@ self.R = R;
1889
1931
  return result;
1890
1932
  };
1891
1933
  const dynamicFilterKeyPathsByChartType = generateDynamicFilterKeyPaths();
1892
- const getBasePathsForDeepClone = (chartType)=>{
1893
- const config = {
1894
- table: [
1895
- 'bodyCellStyle'
1896
- ],
1897
- pivotTable: [
1898
- 'bodyCellStyle'
1899
- ],
1900
- bar: [
1901
- 'barStyle',
1902
- 'annotationPoint',
1903
- 'annotationVerticalLine'
1904
- ],
1905
- barParallel: [
1906
- 'barStyle',
1907
- 'annotationPoint',
1908
- 'annotationVerticalLine'
1909
- ],
1910
- barPercent: [
1911
- 'barStyle',
1912
- 'annotationPoint',
1913
- 'annotationVerticalLine'
1914
- ],
1915
- column: [
1916
- 'barStyle',
1917
- 'annotationPoint',
1918
- 'annotationHorizontalLine'
1919
- ],
1920
- columnParallel: [
1921
- 'barStyle',
1922
- 'annotationPoint',
1923
- 'annotationHorizontalLine'
1924
- ],
1925
- columnPercent: [
1926
- 'barStyle',
1927
- 'annotationPoint',
1928
- 'annotationHorizontalLine'
1929
- ],
1930
- line: [
1931
- 'lineStyle',
1932
- 'pointStyle',
1933
- 'annotationPoint',
1934
- 'annotationHorizontalLine'
1935
- ],
1936
- area: [
1937
- 'lineStyle',
1938
- 'pointStyle',
1939
- 'annotationPoint',
1940
- 'annotationHorizontalLine'
1941
- ],
1942
- areaPercent: [
1943
- 'lineStyle',
1944
- 'pointStyle',
1945
- 'annotationPoint',
1946
- 'annotationHorizontalLine'
1947
- ],
1948
- dualAxis: [
1949
- 'barStyle',
1950
- 'lineStyle',
1951
- 'pointStyle',
1952
- 'annotationPoint',
1953
- 'annotationHorizontalLine'
1954
- ],
1955
- scatter: [
1956
- 'pointStyle',
1957
- 'annotationPoint',
1958
- 'annotationHorizontalLine',
1959
- 'annotationVerticalLine'
1960
- ],
1961
- histogram: [
1962
- 'annotationHorizontalLine'
1963
- ],
1964
- boxPlot: [
1965
- 'annotationHorizontalLine'
1966
- ]
1967
- };
1968
- return config[chartType] ?? [];
1969
- };
1934
+ const getBasePathsForDeepClone = (chartType)=>dynamicFilterConfig[chartType] ?? [];
1970
1935
  const parseKeyPath = (path)=>path.split('.').map((segment)=>{
1971
1936
  if (segment.endsWith('[]')) return {
1972
1937
  key: segment.slice(0, -2),
@@ -2809,27 +2774,10 @@ self.R = R;
2809
2774
  }
2810
2775
  };
2811
2776
  };
2812
- const dimensionTreeToColumns = (spec, context)=>{
2813
- const { advancedVSeed } = context;
2814
- const dimensionTree = advancedVSeed.dimensionTree;
2815
- const result = {
2816
- ...spec
2817
- };
2818
- const eachNode = (node)=>{
2819
- if (isMeasure(node)) return {
2820
- width: 'auto'
2821
- };
2822
- return {};
2823
- };
2824
- const columns = treeTreeToColumns(dimensionTree, eachNode);
2825
- return {
2826
- ...result,
2827
- columns: [
2828
- ...result.columns || [],
2829
- ...columns
2830
- ]
2831
- };
2832
- };
2777
+ function extractLeafIds(tree) {
2778
+ const leafNodes = findTreeNodesBy(tree, ()=>true);
2779
+ return new Set(leafNodes.map((node)=>node.id));
2780
+ }
2833
2781
  const treeTreeToColumns = (tree, callback)=>{
2834
2782
  const result = tree.map((item)=>{
2835
2783
  if ('children' in item && Array.isArray(item.children)) {
@@ -2857,6 +2805,27 @@ self.R = R;
2857
2805
  });
2858
2806
  return result || [];
2859
2807
  };
2808
+ const dimensionTreeToColumns = (spec, context)=>{
2809
+ const { advancedVSeed } = context;
2810
+ const dimensionTree = advancedVSeed.dimensionTree;
2811
+ const result = {
2812
+ ...spec
2813
+ };
2814
+ const eachNode = (node)=>{
2815
+ if (isMeasure(node)) return {
2816
+ width: 'auto'
2817
+ };
2818
+ return {};
2819
+ };
2820
+ const columns = treeTreeToColumns(dimensionTree, eachNode);
2821
+ return {
2822
+ ...result,
2823
+ columns: [
2824
+ ...result.columns || [],
2825
+ ...columns
2826
+ ]
2827
+ };
2828
+ };
2860
2829
  const createNumFormatter = (format, locale = intl.getLocale())=>{
2861
2830
  const { type = 'number', ratio = 1, thousandSeparator = true, prefix = '', suffix = '', symbol = '', fractionDigits = 2, significantDigits, roundingMode = 'halfExpand', roundingPriority = 'auto' } = format || {};
2862
2831
  const numFormatterOptions = {
@@ -2942,7 +2911,7 @@ self.R = R;
2942
2911
  };
2943
2912
  return {};
2944
2913
  };
2945
- const columns = measuresToColumns_treeTreeToColumns(measureTree, eachNode);
2914
+ const columns = treeTreeToColumns(measureTree, eachNode);
2946
2915
  return {
2947
2916
  ...result,
2948
2917
  columns: [
@@ -2959,32 +2928,75 @@ self.R = R;
2959
2928
  return formatter(value);
2960
2929
  };
2961
2930
  };
2962
- const measuresToColumns_treeTreeToColumns = (tree, callback)=>{
2963
- const result = tree.map((item)=>{
2964
- if ('children' in item && Array.isArray(item.children)) {
2965
- const groupNode = item;
2966
- const field = groupNode.id;
2967
- const title = groupNode.alias ?? groupNode.id;
2968
- const props = callback?.(groupNode) || {};
2931
+ const columnsAggregation = (spec, context)=>{
2932
+ const { vseed, advancedVSeed } = context;
2933
+ const { totals } = vseed;
2934
+ if (!totals) return spec;
2935
+ const totalLabelMap = {
2936
+ sum: intl.i18n`合计`,
2937
+ avg: intl.i18n`平均`,
2938
+ max: intl.i18n`最大值`,
2939
+ min: intl.i18n`最小值`,
2940
+ count: intl.i18n`计数`
2941
+ };
2942
+ const totalLabel = totalLabelMap[totals] || intl.i18n`合计`;
2943
+ const vtableAggregationMap = {
2944
+ sum: 'SUM',
2945
+ avg: 'AVG',
2946
+ max: 'MAX',
2947
+ min: 'MIN',
2948
+ count: 'COUNT'
2949
+ };
2950
+ const vtableAggregationType = vtableAggregationMap[totals] || 'SUM';
2951
+ const dimensionIds = extractLeafIds(advancedVSeed.dimensionTree || []);
2952
+ const measureTree = advancedVSeed.measureTree || [];
2953
+ const measureIds = extractLeafIds(measureTree);
2954
+ const leafMeasures = findTreeNodesBy(measureTree, ()=>true);
2955
+ const measureMap = new Map();
2956
+ leafMeasures.forEach((node)=>{
2957
+ if (isMeasure(node)) measureMap.set(node.id, node);
2958
+ });
2959
+ let isFirstDimensionColumn = true;
2960
+ const updatedColumns = spec.columns?.map((column)=>{
2961
+ const fieldKey = column.field;
2962
+ if (dimensionIds.has(fieldKey)) {
2963
+ if (isFirstDimensionColumn) {
2964
+ isFirstDimensionColumn = false;
2965
+ return {
2966
+ ...column,
2967
+ aggregation: {
2968
+ aggregationType: 'NONE',
2969
+ formatFun: ()=>totalLabel
2970
+ }
2971
+ };
2972
+ }
2969
2973
  return {
2970
- field,
2971
- title,
2972
- columns: measuresToColumns_treeTreeToColumns(item.children, callback),
2973
- ...props
2974
+ ...column,
2975
+ aggregation: {
2976
+ aggregationType: 'NONE',
2977
+ formatFun: ()=>''
2978
+ }
2974
2979
  };
2975
2980
  }
2976
- {
2977
- const field = item.id;
2978
- const title = item.alias ?? item.id;
2979
- const props = callback?.(item) || {};
2981
+ if (measureIds.has(fieldKey)) {
2982
+ const measure = measureMap.get(fieldKey);
2983
+ const formatter = createFormatterByMeasure(measure);
2980
2984
  return {
2981
- field,
2982
- title,
2983
- ...props
2985
+ ...column,
2986
+ aggregation: {
2987
+ aggregationType: vtableAggregationType,
2988
+ showOnTop: false,
2989
+ formatFun: (value)=>formatter(value)
2990
+ }
2984
2991
  };
2985
2992
  }
2993
+ return column;
2986
2994
  });
2987
- return result || [];
2995
+ return {
2996
+ ...spec,
2997
+ columns: updatedColumns,
2998
+ bottomFrozenRowCount: 1
2999
+ };
2988
3000
  };
2989
3001
  const bodyStyle = (spec, context)=>{
2990
3002
  const result = {
@@ -3198,6 +3210,7 @@ self.R = R;
3198
3210
  initTable,
3199
3211
  dimensionTreeToColumns,
3200
3212
  measureTreeToColumns,
3213
+ columnsAggregation,
3201
3214
  bodyStyle,
3202
3215
  headerStyle,
3203
3216
  tableThemeStyle,
@@ -3368,7 +3381,8 @@ self.R = R;
3368
3381
  'hoverHeaderBackgroundColor',
3369
3382
  'hoverHeaderInlineBackgroundColor',
3370
3383
  'selectedBorderColor',
3371
- 'selectedBackgroundColor'
3384
+ 'selectedBackgroundColor',
3385
+ 'totals'
3372
3386
  ]);
3373
3387
  result.config = {
3374
3388
  ...result.config || {},
@@ -3440,13 +3454,21 @@ self.R = R;
3440
3454
  const { encoding } = advancedVSeed;
3441
3455
  const dimensions = advancedVSeed.dimensionTree;
3442
3456
  const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
3457
+ const allMeasures = findAllMeasures(advancedVSeed.measureTree);
3443
3458
  return {
3444
3459
  ...spec,
3445
- columns: columns.map((item)=>({
3460
+ columns: columns.map((item)=>{
3461
+ const res = {
3446
3462
  dimensionKey: item.id,
3447
3463
  title: item.alias || item.id,
3448
3464
  width: 'auto'
3449
- }))
3465
+ };
3466
+ if (item.id === MeasureId) res.headerFormat = (measureId)=>{
3467
+ const measure = allMeasures.find((m)=>m.id === measureId);
3468
+ return measure?.alias ?? measureId;
3469
+ };
3470
+ return res;
3471
+ })
3450
3472
  };
3451
3473
  };
3452
3474
  const pivotRows = (spec, context)=>{
@@ -3668,18 +3690,52 @@ self.R = R;
3668
3690
  };
3669
3691
  };
3670
3692
  const dataConfig = (spec, context)=>{
3671
- const { advancedVSeed } = context;
3693
+ const { advancedVSeed, vseed } = context;
3672
3694
  const measures = findAllMeasures(advancedVSeed.measureTree);
3673
3695
  const aggregationRules = measures.map((measure)=>({
3674
3696
  field: measure.id,
3675
3697
  aggregationType: 'NONE',
3676
3698
  indicatorKey: measure.id
3677
3699
  }));
3700
+ const dataConfigObj = {
3701
+ aggregationRules
3702
+ };
3703
+ const { totals } = vseed;
3704
+ if (totals) {
3705
+ const grandTotalLabel = intl.i18n`总计`;
3706
+ const subTotalLabel = intl.i18n`小计`;
3707
+ const dimensionIds = (advancedVSeed.dimensionTree || []).map((dim)=>dim.id);
3708
+ dataConfigObj.totals = {};
3709
+ if (totals.row) {
3710
+ const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
3711
+ const normalizedRowSubDimensions = totals.row.showSubTotals && (!rowSubDimensions || 0 === rowSubDimensions.length) ? dimensionIds.length > 0 ? [
3712
+ dimensionIds[0]
3713
+ ] : [] : rowSubDimensions;
3714
+ dataConfigObj.totals.row = {
3715
+ showGrandTotals: totals.row.showGrandTotals ?? false,
3716
+ showSubTotals: totals.row.showSubTotals ?? false,
3717
+ subTotalsDimensions: normalizedRowSubDimensions,
3718
+ grandTotalLabel,
3719
+ subTotalLabel
3720
+ };
3721
+ }
3722
+ if (totals.column) {
3723
+ const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
3724
+ const normalizedColumnSubDimensions = totals.column.showSubTotals && (!columnSubDimensions || 0 === columnSubDimensions.length) ? dimensionIds.length > 0 ? [
3725
+ dimensionIds[0]
3726
+ ] : [] : columnSubDimensions;
3727
+ dataConfigObj.totals.column = {
3728
+ showGrandTotals: totals.column.showGrandTotals ?? false,
3729
+ showSubTotals: totals.column.showSubTotals ?? false,
3730
+ subTotalsDimensions: normalizedColumnSubDimensions,
3731
+ grandTotalLabel,
3732
+ subTotalLabel
3733
+ };
3734
+ }
3735
+ }
3678
3736
  return {
3679
3737
  ...spec,
3680
- dataConfig: {
3681
- aggregationRules
3682
- }
3738
+ dataConfig: dataConfigObj
3683
3739
  };
3684
3740
  };
3685
3741
  const pivotTableSpecPipeline = [
@@ -5207,7 +5263,11 @@ self.R = R;
5207
5263
  const percentFormatter = createFormatter(percentFormat);
5208
5264
  const result = {
5209
5265
  visible: enable,
5210
- dataFilter: (data)=>data.filter((entry)=>entry.data?.[DATUM_HIDE_KEY] !== true && selector_selector(entry.data, label.selector, 'Or')),
5266
+ dataFilter: (data)=>data.filter((entry)=>{
5267
+ if (entry.data?.[DATUM_HIDE_KEY]) return false;
5268
+ const shouldApply = label.dynamicFilter ? selectorWithDynamicFilter(entry.data, label.dynamicFilter, label.selector) : selector_selector(entry.data, label.selector, 'Or');
5269
+ return shouldApply;
5270
+ }),
5211
5271
  formatMethod: (_, datum)=>{
5212
5272
  const result = [];
5213
5273
  const dimLabels = labelDims.map((item)=>{
@@ -8230,7 +8290,7 @@ self.R = R;
8230
8290
  });
8231
8291
  return result;
8232
8292
  };
8233
- const column = [
8293
+ const column_column = [
8234
8294
  initColumn,
8235
8295
  stackCornerRadius_stackCornerRadius,
8236
8296
  barMaxWidth_barMaxWidth,
@@ -8287,7 +8347,7 @@ self.R = R;
8287
8347
  dimensionLinkage
8288
8348
  ];
8289
8349
  const columnSpecPipeline = [
8290
- pivotAdapter_pivotAdapter(column, pivotColumn)
8350
+ pivotAdapter_pivotAdapter(column_column, pivotColumn)
8291
8351
  ];
8292
8352
  const registerColumn = ()=>{
8293
8353
  Builder.registerAdvancedPipeline('column', columnAdvancedPipeline);
@@ -12908,21 +12968,21 @@ self.R = R;
12908
12968
  };
12909
12969
  const isObjectLike = (value)=>"object" == typeof value && null !== value;
12910
12970
  const common_isObjectLike = isObjectLike;
12911
- const isPlainObject_isPlainObject = function(value) {
12971
+ const isPlainObject = function(value) {
12912
12972
  if (!common_isObjectLike(value) || !isType(value, "Object")) return !1;
12913
12973
  if (null === Object.getPrototypeOf(value)) return !0;
12914
12974
  let proto = value;
12915
12975
  for(; null !== Object.getPrototypeOf(proto);)proto = Object.getPrototypeOf(proto);
12916
12976
  return Object.getPrototypeOf(value) === proto;
12917
12977
  };
12918
- const isPlainObject = isPlainObject_isPlainObject;
12978
+ const common_isPlainObject = isPlainObject;
12919
12979
  const isString = (value, fuzzy = !1)=>{
12920
12980
  const type = typeof value;
12921
12981
  return fuzzy ? "string" === type : "string" === type || isType(value, "String");
12922
12982
  };
12923
12983
  const common_isString = isString;
12924
12984
  function pickWithout(obj, keys) {
12925
- if (!obj || !isPlainObject(obj)) return obj;
12985
+ if (!obj || !common_isPlainObject(obj)) return obj;
12926
12986
  const result = {};
12927
12987
  return Object.keys(obj).forEach((k)=>{
12928
12988
  const v = obj[k];
@@ -15258,7 +15318,7 @@ self.R = R;
15258
15318
  const length = objValue.length;
15259
15319
  for(; ++index < length;)newValue[index] = objValue[index];
15260
15320
  }
15261
- } else isPlainObject(srcValue) ? (newValue = null != objValue ? objValue : {}, "function" != typeof objValue && "object" == typeof objValue || (newValue = {})) : isCommon = !1;
15321
+ } else common_isPlainObject(srcValue) ? (newValue = null != objValue ? objValue : {}, "function" != typeof objValue && "object" == typeof objValue || (newValue = {})) : isCommon = !1;
15262
15322
  isCommon && baseMerge(newValue, srcValue, shallowArray, skipTargetArray), assignMergeValue(target, key, newValue);
15263
15323
  }
15264
15324
  function assignMergeValue(target, key, value) {
@@ -23094,7 +23154,7 @@ self.R = R;
23094
23154
  ]).optional(),
23095
23155
  result: schemas_object({
23096
23156
  success: schemas_boolean(),
23097
- data: schemas_array(record(schemas_string(), any())).optional()
23157
+ data: schemas_array(zCellSelector).optional()
23098
23158
  }).optional()
23099
23159
  });
23100
23160
  const zValueDynamicFilter = schemas_object({
@@ -23135,7 +23195,8 @@ self.R = R;
23135
23195
  selector: union([
23136
23196
  zSelector,
23137
23197
  zSelectors
23138
- ]).nullish()
23198
+ ]).nullish(),
23199
+ dynamicFilter: zChartDynamicFilter.optional()
23139
23200
  });
23140
23201
  const zLegend = schemas_object({
23141
23202
  enable: schemas_boolean().default(true).nullish(),
@@ -23993,6 +24054,22 @@ self.R = R;
23993
24054
  field: schemas_string(),
23994
24055
  currentValue: schemas_string()
23995
24056
  });
24057
+ const zRowOrColumnTotalConfig = schemas_object({
24058
+ showGrandTotals: schemas_boolean().optional(),
24059
+ showSubTotals: schemas_boolean().optional(),
24060
+ subTotalsDimensions: schemas_array(schemas_string()).optional()
24061
+ });
24062
+ const zPivotTableTotals = schemas_object({
24063
+ row: zRowOrColumnTotalConfig.optional(),
24064
+ column: zRowOrColumnTotalConfig.optional()
24065
+ });
24066
+ const zTotalType = schemas_enum([
24067
+ 'sum',
24068
+ 'avg',
24069
+ 'max',
24070
+ 'min',
24071
+ 'count'
24072
+ ]);
23996
24073
  const zLocale = schemas_enum([
23997
24074
  'zh-CN',
23998
24075
  'en-US'
@@ -24018,6 +24095,7 @@ self.R = R;
24018
24095
  selectedBorderColor: schemas_string().nullish(),
24019
24096
  selectedBackgroundColor: schemas_string().nullish(),
24020
24097
  bodyCellStyle: schemas_array(zBodyCellStyle).or(zBodyCellStyle).nullish(),
24098
+ totals: zTotalType.nullish(),
24021
24099
  theme: zTheme.nullish(),
24022
24100
  locale: zLocale.nullish()
24023
24101
  });
@@ -24042,6 +24120,7 @@ self.R = R;
24042
24120
  selectedBorderColor: schemas_string().nullish(),
24043
24121
  selectedBackgroundColor: schemas_string().nullish(),
24044
24122
  bodyCellStyle: schemas_array(zBodyCellStyle).or(zBodyCellStyle).nullish(),
24123
+ totals: zPivotTableTotals.nullish(),
24045
24124
  theme: zTheme.nullish(),
24046
24125
  locale: zLocale.nullish()
24047
24126
  });
@@ -24780,7 +24859,8 @@ self.R = R;
24780
24859
  customTheme: zCustomThemeConfig,
24781
24860
  annotation: zAnnotation,
24782
24861
  locale: zLocale,
24783
- regressionLine: zRegressionLine
24862
+ regressionLine: zRegressionLine,
24863
+ totals: zPivotTableTotals.optional()
24784
24864
  });
24785
24865
  const i18n_a = 123;
24786
24866
  return __webpack_exports__;