@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
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n VChartSpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { selector } from 'src/dataSelector'\nimport { MeasureId } from 'src/dataReshape/constant'\n\nexport const label: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions!,\n advancedVSeed.measures!,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = (\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: (Pick<FoldInfo, 'measureId' | 'measureValue'> & Partial<Pick<FoldInfo, 'statistics'>>)[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureId && d.encoding !== 'row' && d.encoding !== 'column')\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.filter((item) => encoding.label?.includes(item.id)),\n (item: Measure) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n const result = {\n visible: enable,\n dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n return entry.data?.[DATUM_HIDE_KEY] !== true && selector(entry.data as Datum, label.selector, 'Or')\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n if (isNumber(datum['__VCHART_ARC_RATIO'])) {\n // 饼图/环图需要使用实际占比数据\n result.push(generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter))\n } else if (statistics && isNumber(statistics.sum)) {\n result.push(\n generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter),\n )\n }\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n syncState: true,\n position: labelPosition,\n style: {\n stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelColorSmartInvert) {\n ;(result.style as any).lineWidth = 2 // label 边框线宽度,不设置这个会导致智能反色失败\n }\n\n if (labelOverlap) {\n ;(result as any).overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n"],"names":["label","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","encoding","baseConfig","foldInfo","buildLabel","generateMeasureValue","value","measure","labelAutoFormat","numFormat","format","merge","mergedMeasure","formatter","createFormatterByMeasure","generateMeasurePercent","sum","String","num","Number","percentValue","vseedMeasures","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","enable","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","hasDimLabelEncoding","item","labelDims","uniqueBy","d","MeasureId","labelMeas","percentFormat","percentFormatter","createFormatter","data","entry","DATUM_HIDE_KEY","selector","_","datum","dimLabels","id","meaLabels","measureId","measureValue","statistics","findMeasureById","measureValueLabel","isNumber"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n VChartSpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { selector, selectorWithDynamicFilter } from 'src/dataSelector'\nimport { MeasureId } from 'src/dataReshape/constant'\n\nexport const label: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n\n const { label } = baseConfig\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions!,\n advancedVSeed.measures!,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = (\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: (Pick<FoldInfo, 'measureId' | 'measureValue'> & Partial<Pick<FoldInfo, 'statistics'>>)[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureId && d.encoding !== 'row' && d.encoding !== 'column')\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.filter((item) => encoding.label?.includes(item.id)),\n (item: Measure) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n const result = {\n visible: enable,\n dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n if (entry.data?.[DATUM_HIDE_KEY]) {\n return false\n }\n const shouldApply = label.dynamicFilter\n ? selectorWithDynamicFilter(entry.data as Datum, label.dynamicFilter, label.selector)\n : selector(entry.data as Datum, label.selector, 'Or')\n return shouldApply\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n if (isNumber(datum['__VCHART_ARC_RATIO'])) {\n // 饼图/环图需要使用实际占比数据\n result.push(generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter))\n } else if (statistics && isNumber(statistics.sum)) {\n result.push(\n generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter),\n )\n }\n }\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n syncState: true,\n position: labelPosition,\n style: {\n stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelColorSmartInvert) {\n ;(result.style as any).lineWidth = 2 // label 边框线宽度,不设置这个会导致智能反色失败\n }\n\n if (labelOverlap) {\n ;(result as any).overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n"],"names":["label","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","encoding","baseConfig","foldInfo","buildLabel","generateMeasureValue","value","measure","labelAutoFormat","numFormat","format","merge","mergedMeasure","formatter","createFormatterByMeasure","generateMeasurePercent","sum","String","num","Number","percentValue","vseedMeasures","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","enable","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","hasDimLabelEncoding","item","labelDims","uniqueBy","d","MeasureId","labelMeas","percentFormat","percentFormatter","createFormatter","data","entry","DATUM_HIDE_KEY","shouldApply","selectorWithDynamicFilter","selector","_","datum","dimLabels","id","meaLabels","measureId","measureValue","statistics","findMeasureById","measureValueLabel","isNumber"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { bodyStyle, dimensionTreeToColumns, headerStyle, initTable, measureTreeToColumns, selectionStyle, tableBodyCell, tableThemeStyle } from "../pipes/index.js";
1
+ import { bodyStyle, columnsAggregation, dimensionTreeToColumns, headerStyle, initTable, measureTreeToColumns, selectionStyle, tableBodyCell, tableThemeStyle } from "../pipes/index.js";
2
2
  const tableSpecPipeline = [
3
3
  initTable,
4
4
  dimensionTreeToColumns,
5
5
  measureTreeToColumns,
6
+ columnsAggregation,
6
7
  bodyStyle,
7
8
  headerStyle,
8
9
  tableThemeStyle,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipeline/table.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts"],"sourcesContent":["import type { SpecPipeline } from 'src/types'\nimport {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n tableThemeStyle,\n selectionStyle,\n tableBodyCell,\n} from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n bodyStyle,\n headerStyle,\n tableThemeStyle,\n selectionStyle,\n tableBodyCell,\n]\n"],"names":["tableSpecPipeline","initTable","dimensionTreeToColumns","measureTreeToColumns","bodyStyle","headerStyle","tableThemeStyle","selectionStyle","tableBodyCell"],"mappings":";AAYO,MAAMA,oBAAkC;IAC7CC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;CACD"}
1
+ {"version":3,"file":"pipeline/spec/table/pipeline/table.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipeline/table.ts"],"sourcesContent":["import type { SpecPipeline } from 'src/types'\nimport {\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n columnsAggregation,\n bodyStyle,\n headerStyle,\n tableThemeStyle,\n selectionStyle,\n tableBodyCell,\n} from '../pipes'\n\nexport const tableSpecPipeline: SpecPipeline = [\n initTable,\n dimensionTreeToColumns,\n measureTreeToColumns,\n columnsAggregation,\n bodyStyle,\n headerStyle,\n tableThemeStyle,\n selectionStyle,\n tableBodyCell,\n]\n"],"names":["tableSpecPipeline","initTable","dimensionTreeToColumns","measureTreeToColumns","columnsAggregation","bodyStyle","headerStyle","tableThemeStyle","selectionStyle","tableBodyCell"],"mappings":";AAaO,MAAMA,oBAAkC;IAC7CC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;CACD"}
@@ -0,0 +1,8 @@
1
+ import type { ListTableSpecPipe } from '../../../../../types';
2
+ /**
3
+ * @description 为表格列添加汇总行配置
4
+ * - 只对度量列应用聚合函数
5
+ * - 在第一个维度列显示汇总标签
6
+ * - 其他维度列留空
7
+ */
8
+ export declare const columnsAggregation: ListTableSpecPipe;
@@ -0,0 +1,76 @@
1
+ import { intl } from "../../../../../i18n/index.js";
2
+ import { createFormatterByMeasure, findTreeNodesBy, isMeasure } from "../../../../utils/index.js";
3
+ import { extractLeafIds } from "./utils.js";
4
+ const columnsAggregation = (spec, context)=>{
5
+ const { vseed, advancedVSeed } = context;
6
+ const { totals } = vseed;
7
+ if (!totals) return spec;
8
+ const totalLabelMap = {
9
+ sum: intl.i18n`合计`,
10
+ avg: intl.i18n`平均`,
11
+ max: intl.i18n`最大值`,
12
+ min: intl.i18n`最小值`,
13
+ count: intl.i18n`计数`
14
+ };
15
+ const totalLabel = totalLabelMap[totals] || intl.i18n`合计`;
16
+ const vtableAggregationMap = {
17
+ sum: 'SUM',
18
+ avg: 'AVG',
19
+ max: 'MAX',
20
+ min: 'MIN',
21
+ count: 'COUNT'
22
+ };
23
+ const vtableAggregationType = vtableAggregationMap[totals] || 'SUM';
24
+ const dimensionIds = extractLeafIds(advancedVSeed.dimensionTree || []);
25
+ const measureTree = advancedVSeed.measureTree || [];
26
+ const measureIds = extractLeafIds(measureTree);
27
+ const leafMeasures = findTreeNodesBy(measureTree, ()=>true);
28
+ const measureMap = new Map();
29
+ leafMeasures.forEach((node)=>{
30
+ if (isMeasure(node)) measureMap.set(node.id, node);
31
+ });
32
+ let isFirstDimensionColumn = true;
33
+ const updatedColumns = spec.columns?.map((column)=>{
34
+ const fieldKey = column.field;
35
+ if (dimensionIds.has(fieldKey)) {
36
+ if (isFirstDimensionColumn) {
37
+ isFirstDimensionColumn = false;
38
+ return {
39
+ ...column,
40
+ aggregation: {
41
+ aggregationType: 'NONE',
42
+ formatFun: ()=>totalLabel
43
+ }
44
+ };
45
+ }
46
+ return {
47
+ ...column,
48
+ aggregation: {
49
+ aggregationType: 'NONE',
50
+ formatFun: ()=>''
51
+ }
52
+ };
53
+ }
54
+ if (measureIds.has(fieldKey)) {
55
+ const measure = measureMap.get(fieldKey);
56
+ const formatter = createFormatterByMeasure(measure);
57
+ return {
58
+ ...column,
59
+ aggregation: {
60
+ aggregationType: vtableAggregationType,
61
+ showOnTop: false,
62
+ formatFun: (value)=>formatter(value)
63
+ }
64
+ };
65
+ }
66
+ return column;
67
+ });
68
+ return {
69
+ ...spec,
70
+ columns: updatedColumns,
71
+ bottomFrozenRowCount: 1
72
+ };
73
+ };
74
+ export { columnsAggregation };
75
+
76
+ //# sourceMappingURL=columnsAggregation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/columnsAggregation.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/columnsAggregation.ts"],"sourcesContent":["import { intl } from 'src/i18n'\nimport { createFormatterByMeasure, isMeasure, findTreeNodesBy } from 'src/pipeline/utils'\nimport type { ListTableSpecPipe, Measure } from 'src/types'\nimport { extractLeafIds } from './utils'\n\n/**\n * @description 为表格列添加汇总行配置\n * - 只对度量列应用聚合函数\n * - 在第一个维度列显示汇总标签\n * - 其他维度列留空\n */\nexport const columnsAggregation: ListTableSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { totals } = vseed as any\n\n if (!totals) {\n return spec\n }\n\n // 映射汇总类型到 i18n 标签\n const totalLabelMap: Record<string, string> = {\n sum: intl.i18n`合计`,\n avg: intl.i18n`平均`,\n max: intl.i18n`最大值`,\n min: intl.i18n`最小值`,\n count: intl.i18n`计数`,\n }\n\n const totalLabel = totalLabelMap[totals] || intl.i18n`合计`\n\n // 映射到 VTable 的聚合类型\n const vtableAggregationMap: Record<string, string> = {\n sum: 'SUM',\n avg: 'AVG',\n max: 'MAX',\n min: 'MIN',\n count: 'COUNT',\n }\n\n const vtableAggregationType = vtableAggregationMap[totals] || 'SUM'\n\n // 从树形结构中提取所有叶子节点的ID\n const dimensionIds = extractLeafIds(advancedVSeed.dimensionTree || [])\n const measureTree = advancedVSeed.measureTree || []\n const measureIds = extractLeafIds(measureTree)\n\n // 创建 measure id 到 measure 对象的映射\n const leafMeasures = findTreeNodesBy(measureTree, () => true)\n const measureMap = new Map<string, Measure>()\n leafMeasures.forEach((node) => {\n if (isMeasure(node)) {\n measureMap.set(node.id, node as Measure)\n }\n })\n\n let isFirstDimensionColumn = true\n\n const updatedColumns = spec.columns?.map((column: any) => {\n const fieldKey = column.field\n\n // 维度列处理\n if (dimensionIds.has(fieldKey)) {\n if (isFirstDimensionColumn) {\n isFirstDimensionColumn = false\n return {\n ...column,\n aggregation: {\n aggregationType: 'NONE',\n formatFun: () => totalLabel,\n },\n }\n }\n\n // 其他维度列留空\n return {\n ...column,\n aggregation: {\n aggregationType: 'NONE',\n formatFun: () => '',\n },\n }\n }\n\n // 度量列处理 - 应用聚合函数和格式化\n if (measureIds.has(fieldKey)) {\n const measure = measureMap.get(fieldKey)\n const formatter = createFormatterByMeasure(measure)\n\n return {\n ...column,\n aggregation: {\n aggregationType: vtableAggregationType,\n showOnTop: false,\n formatFun: (value: number | string | undefined) => formatter(value),\n },\n }\n }\n\n return column\n })\n\n return {\n ...spec,\n columns: updatedColumns,\n bottomFrozenRowCount: 1,\n }\n}\n"],"names":["columnsAggregation","spec","context","vseed","advancedVSeed","totals","totalLabelMap","intl","totalLabel","vtableAggregationMap","vtableAggregationType","dimensionIds","extractLeafIds","measureTree","measureIds","leafMeasures","findTreeNodesBy","measureMap","Map","node","isMeasure","isFirstDimensionColumn","updatedColumns","column","fieldKey","measure","formatter","createFormatterByMeasure","value"],"mappings":";;;AAWO,MAAMA,qBAAwC,CAACC,MAAMC;IAC1D,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGF;IACjC,MAAM,EAAEG,MAAM,EAAE,GAAGF;IAEnB,IAAI,CAACE,QACH,OAAOJ;IAIT,MAAMK,gBAAwC;QAC5C,KAAKC,KAAK,IAAI,CAAC,EAAE,CAAC;QAClB,KAAKA,KAAK,IAAI,CAAC,EAAE,CAAC;QAClB,KAAKA,KAAK,IAAI,CAAC,GAAG,CAAC;QACnB,KAAKA,KAAK,IAAI,CAAC,GAAG,CAAC;QACnB,OAAOA,KAAK,IAAI,CAAC,EAAE,CAAC;IACtB;IAEA,MAAMC,aAAaF,aAAa,CAACD,OAAO,IAAIE,KAAK,IAAI,CAAC,EAAE,CAAC;IAGzD,MAAME,uBAA+C;QACnD,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,OAAO;IACT;IAEA,MAAMC,wBAAwBD,oBAAoB,CAACJ,OAAO,IAAI;IAG9D,MAAMM,eAAeC,eAAeR,cAAc,aAAa,IAAI,EAAE;IACrE,MAAMS,cAAcT,cAAc,WAAW,IAAI,EAAE;IACnD,MAAMU,aAAaF,eAAeC;IAGlC,MAAME,eAAeC,gBAAgBH,aAAa,IAAM;IACxD,MAAMI,aAAa,IAAIC;IACvBH,aAAa,OAAO,CAAC,CAACI;QACpB,IAAIC,UAAUD,OACZF,WAAW,GAAG,CAACE,KAAK,EAAE,EAAEA;IAE5B;IAEA,IAAIE,yBAAyB;IAE7B,MAAMC,iBAAiBrB,KAAK,OAAO,EAAE,IAAI,CAACsB;QACxC,MAAMC,WAAWD,OAAO,KAAK;QAG7B,IAAIZ,aAAa,GAAG,CAACa,WAAW;YAC9B,IAAIH,wBAAwB;gBAC1BA,yBAAyB;gBACzB,OAAO;oBACL,GAAGE,MAAM;oBACT,aAAa;wBACX,iBAAiB;wBACjB,WAAW,IAAMf;oBACnB;gBACF;YACF;YAGA,OAAO;gBACL,GAAGe,MAAM;gBACT,aAAa;oBACX,iBAAiB;oBACjB,WAAW,IAAM;gBACnB;YACF;QACF;QAGA,IAAIT,WAAW,GAAG,CAACU,WAAW;YAC5B,MAAMC,UAAUR,WAAW,GAAG,CAACO;YAC/B,MAAME,YAAYC,yBAAyBF;YAE3C,OAAO;gBACL,GAAGF,MAAM;gBACT,aAAa;oBACX,iBAAiBb;oBACjB,WAAW;oBACX,WAAW,CAACkB,QAAuCF,UAAUE;gBAC/D;YACF;QACF;QAEA,OAAOL;IACT;IAEA,OAAO;QACL,GAAGtB,IAAI;QACP,SAASqB;QACT,sBAAsB;IACxB;AACF"}
@@ -1,4 +1,5 @@
1
1
  import { isMeasure } from "../../../../utils/index.js";
2
+ import { treeTreeToColumns } from "./utils.js";
2
3
  const dimensionTreeToColumns = (spec, context)=>{
3
4
  const { advancedVSeed } = context;
4
5
  const dimensionTree = advancedVSeed.dimensionTree;
@@ -20,33 +21,6 @@ const dimensionTreeToColumns = (spec, context)=>{
20
21
  ]
21
22
  };
22
23
  };
23
- const treeTreeToColumns = (tree, callback)=>{
24
- const result = tree.map((item)=>{
25
- if ('children' in item && Array.isArray(item.children)) {
26
- const groupNode = item;
27
- const field = groupNode.id;
28
- const title = groupNode.alias ?? groupNode.id;
29
- const props = callback?.(groupNode) || {};
30
- return {
31
- field,
32
- title,
33
- columns: treeTreeToColumns(item.children, callback),
34
- ...props
35
- };
36
- }
37
- {
38
- const field = item.id;
39
- const title = item.alias ?? item.id;
40
- const props = callback?.(item) || {};
41
- return {
42
- field,
43
- title,
44
- ...props
45
- };
46
- }
47
- });
48
- return result || [];
49
- };
50
24
  export { dimensionTreeToColumns };
51
25
 
52
26
  //# sourceMappingURL=dimensionsToColumns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/columns/dimensionsToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/dimensionsToColumns.ts"],"sourcesContent":["import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { isMeasure } from 'src/pipeline/utils'\nimport type { Dimension, DimensionGroup, DimensionTree, ListTableSpecPipe } from 'src/types'\n\nexport const dimensionTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensionTree = (advancedVSeed as unknown as { dimensionTree: DimensionTree }).dimensionTree\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Dimension | DimensionGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensionTree, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n"],"names":["dimensionTreeToColumns","spec","context","advancedVSeed","dimensionTree","result","eachNode","node","isMeasure","columns","treeTreeToColumns","tree","callback","item","Array","groupNode","field","title","props"],"mappings":";AAIO,MAAMA,yBAA4C,CAACC,MAAMC;IAC9D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,gBAAiBD,cAA8D,aAAa;IAClG,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IACzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;QACT;QAGF,OAAO,CAAC;IACV;IACA,MAAME,UAAUC,kBAA6CN,eAAeE;IAE5E,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMI;SAAQ;IAClD;AACF;AAEA,MAAMC,oBAAoB,CAIxBC,MACAC;IAEA,MAAMP,SAASM,KAAK,GAAG,CAAC,CAACE;QACvB,IAAI,cAAcA,QAAQC,MAAM,OAAO,CAACD,KAAK,QAAQ,GAAG;YACtD,MAAME,YAAYF;YAClB,MAAMG,QAAQD,UAAU,EAAE;YAC1B,MAAME,QAAQF,UAAU,KAAK,IAAIA,UAAU,EAAE;YAC7C,MAAMG,QAAQN,WAAWG,cAAc,CAAC;YAExC,OAAO;gBACLC;gBACAC;gBACA,SAASP,kBAAkBG,KAAK,QAAQ,EAAED;gBAC1C,GAAGM,KAAK;YACV;QACF;QAAO;YACL,MAAMF,QAAQH,KAAK,EAAE;YACrB,MAAMI,QAAQJ,KAAK,KAAK,IAAIA,KAAK,EAAE;YACnC,MAAMK,QAAQN,WAAWC,SAAS,CAAC;YAEnC,OAAO;gBACLG;gBACAC;gBACA,GAAGC,KAAK;YACV;QACF;IACF;IAEA,OAAOb,UAAU,EAAE;AACrB"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/dimensionsToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/dimensionsToColumns.ts"],"sourcesContent":["import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport { isMeasure } from 'src/pipeline/utils'\nimport type { Dimension, DimensionGroup, DimensionTree, ListTableSpecPipe } from 'src/types'\nimport { treeTreeToColumns } from './utils'\n\nexport const dimensionTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensionTree = (advancedVSeed as unknown as { dimensionTree: DimensionTree }).dimensionTree\n const result = { ...spec } as ListTableConstructorOptions\n const eachNode = (node: Dimension | DimensionGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Dimension, DimensionGroup>(dimensionTree, eachNode)\n\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n"],"names":["dimensionTreeToColumns","spec","context","advancedVSeed","dimensionTree","result","eachNode","node","isMeasure","columns","treeTreeToColumns"],"mappings":";;AAKO,MAAMA,yBAA4C,CAACC,MAAMC;IAC9D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,gBAAiBD,cAA8D,aAAa;IAClG,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IACzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;QACT;QAGF,OAAO,CAAC;IACV;IACA,MAAME,UAAUC,kBAA6CN,eAAeE;IAE5E,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMI;SAAQ;IAClD;AACF"}
@@ -1,3 +1,4 @@
1
1
  export * from './measuresToColumns';
2
2
  export * from './dimensionsToColumns';
3
3
  export * from './pivotColumns';
4
+ export * from './columnsAggregation';
@@ -1,3 +1,4 @@
1
1
  export * from "./measuresToColumns.js";
2
2
  export * from "./dimensionsToColumns.js";
3
3
  export * from "./pivotColumns.js";
4
+ export * from "./columnsAggregation.js";
@@ -1,4 +1,5 @@
1
1
  import { createFormatterByMeasure, isMeasure } from "../../../../utils/index.js";
2
+ import { treeTreeToColumns } from "./utils.js";
2
3
  const measureTreeToColumns = (spec, context)=>{
3
4
  const { advancedVSeed } = context;
4
5
  const measureTree = advancedVSeed.measureTree;
@@ -29,33 +30,6 @@ const fieldFormat = (node)=>{
29
30
  return formatter(value);
30
31
  };
31
32
  };
32
- const treeTreeToColumns = (tree, callback)=>{
33
- const result = tree.map((item)=>{
34
- if ('children' in item && Array.isArray(item.children)) {
35
- const groupNode = item;
36
- const field = groupNode.id;
37
- const title = groupNode.alias ?? groupNode.id;
38
- const props = callback?.(groupNode) || {};
39
- return {
40
- field,
41
- title,
42
- columns: treeTreeToColumns(item.children, callback),
43
- ...props
44
- };
45
- }
46
- {
47
- const field = item.id;
48
- const title = item.alias ?? item.id;
49
- const props = callback?.(item) || {};
50
- return {
51
- field,
52
- title,
53
- ...props
54
- };
55
- }
56
- });
57
- return result || [];
58
- };
59
33
  export { measureTreeToColumns };
60
34
 
61
35
  //# sourceMappingURL=measuresToColumns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/columns/measuresToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts"],"sourcesContent":["import type { ColumnsDefine, ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, ListTableSpecPipe, Datum } from 'src/types'\n\nexport const measureTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measureTree = (advancedVSeed as unknown as { measureTree: MeasureTree }).measureTree\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measureTree, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\n }\n}\nconst treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n"],"names":["measureTreeToColumns","spec","context","advancedVSeed","measureTree","result","eachNode","node","isMeasure","fieldFormat","columns","treeTreeToColumns","formatter","createFormatterByMeasure","datum","id","value","tree","callback","item","Array","groupNode","field","title","props"],"mappings":";AAIO,MAAMA,uBAA0C,CAACC,MAAMC;IAC5D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,cAAeD,cAA0D,WAAW;IAC1F,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IAEzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;YACP,aAAaE,YAAYF;QAC3B;QAGF,OAAO,CAAC;IACV;IACA,MAAMG,UAAUC,kBAAyCP,aAAaE;IACtE,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMK;SAAQ;IAClD;AACF;AAEA,MAAMD,cAAc,CAACF;IACnB,MAAMK,YAAYC,yBAAyBN;IAE3C,OAAO,CAACO;QACN,MAAM,EAAEC,EAAE,EAAE,GAAGR;QACf,MAAMS,QAAQF,KAAK,CAACC,GAAG;QACvB,OAAOH,UAAUI;IACnB;AACF;AACA,MAAML,oBAAoB,CAIxBM,MACAC;IAEA,MAAMb,SAASY,KAAK,GAAG,CAAC,CAACE;QACvB,IAAI,cAAcA,QAAQC,MAAM,OAAO,CAACD,KAAK,QAAQ,GAAG;YACtD,MAAME,YAAYF;YAClB,MAAMG,QAAQD,UAAU,EAAE;YAC1B,MAAME,QAAQF,UAAU,KAAK,IAAIA,UAAU,EAAE;YAC7C,MAAMG,QAAQN,WAAWG,cAAc,CAAC;YAExC,OAAO;gBACLC;gBACAC;gBACA,SAASZ,kBAAkBQ,KAAK,QAAQ,EAAED;gBAC1C,GAAGM,KAAK;YACV;QACF;QAAO;YACL,MAAMF,QAAQH,KAAK,EAAE;YACrB,MAAMI,QAAQJ,KAAK,KAAK,IAAIA,KAAK,EAAE;YACnC,MAAMK,QAAQN,WAAWC,SAAS,CAAC;YAEnC,OAAO;gBACLG;gBACAC;gBACA,GAAGC,KAAK;YACV;QACF;IACF;IAEA,OAAOnB,UAAU,EAAE;AACrB"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/measuresToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts"],"sourcesContent":["import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, ListTableSpecPipe, Datum } from 'src/types'\nimport { treeTreeToColumns } from './utils'\n\nexport const measureTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measureTree = (advancedVSeed as unknown as { measureTree: MeasureTree }).measureTree\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measureTree, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\n }\n}\n"],"names":["measureTreeToColumns","spec","context","advancedVSeed","measureTree","result","eachNode","node","isMeasure","fieldFormat","columns","treeTreeToColumns","formatter","createFormatterByMeasure","datum","id","value"],"mappings":";;AAKO,MAAMA,uBAA0C,CAACC,MAAMC;IAC5D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,cAAeD,cAA0D,WAAW;IAC1F,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IAEzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;YACP,aAAaE,YAAYF;QAC3B;QAGF,OAAO,CAAC;IACV;IACA,MAAMG,UAAUC,kBAAyCP,aAAaE;IACtE,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMK;SAAQ;IAClD;AACF;AAEA,MAAMD,cAAc,CAACF;IACnB,MAAMK,YAAYC,yBAAyBN;IAE3C,OAAO,CAACO;QACN,MAAM,EAAEC,EAAE,EAAE,GAAGR;QACf,MAAMS,QAAQF,KAAK,CAACC,GAAG;QACvB,OAAOH,UAAUI;IACnB;AACF"}
@@ -1,15 +1,25 @@
1
+ import { MeasureId } from "../../../../../dataReshape/index.js";
2
+ import { findAllMeasures } from "../../../../utils/index.js";
1
3
  const pivotColumns = (spec, context)=>{
2
4
  const { advancedVSeed } = context;
3
5
  const { encoding } = advancedVSeed;
4
6
  const dimensions = advancedVSeed.dimensionTree;
5
7
  const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
8
+ const allMeasures = findAllMeasures(advancedVSeed.measureTree);
6
9
  return {
7
10
  ...spec,
8
- columns: columns.map((item)=>({
11
+ columns: columns.map((item)=>{
12
+ const res = {
9
13
  dimensionKey: item.id,
10
14
  title: item.alias || item.id,
11
15
  width: 'auto'
12
- }))
16
+ };
17
+ if (item.id === MeasureId) res.headerFormat = (measureId)=>{
18
+ const measure = allMeasures.find((m)=>m.id === measureId);
19
+ return measure?.alias ?? measureId;
20
+ };
21
+ return res;
22
+ })
13
23
  };
14
24
  };
15
25
  export { pivotColumns };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/columns/pivotColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts"],"sourcesContent":["import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotColumns: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n"],"names":["pivotColumns","spec","context","advancedVSeed","encoding","dimensions","columns","item"],"mappings":"AAGO,MAAMA,eAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IACrB,MAAME,aAAaF,cAAc,aAAa;IAC9C,MAAMG,UAAUD,WAAW,MAAM,CAAC,CAACE,OAASH,SAAS,MAAM,EAAE,SAASG,KAAK,EAAE;IAE7E,OAAO;QACL,GAAGN,IAAI;QACP,SAASK,QAAQ,GAAG,CAAC,CAACC,OACb;gBACL,cAAcA,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;IAEJ;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/pivotColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts"],"sourcesContent":["import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotColumns: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n const allMeasures = findAllMeasures(advancedVSeed.measureTree)\n\n return {\n ...spec,\n columns: columns.map((item) => {\n const res = {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n if (item.id === MeasureId) {\n ;(res as any).headerFormat = (measureId: string) => {\n const measure = allMeasures.find((m) => m.id === measureId)\n\n return measure?.alias ?? measureId\n }\n }\n\n return res\n }),\n } as PivotTableConstructorOptions\n}\n"],"names":["pivotColumns","spec","context","advancedVSeed","encoding","dimensions","columns","item","allMeasures","findAllMeasures","res","MeasureId","measureId","measure","m"],"mappings":";;AAKO,MAAMA,eAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IACrB,MAAME,aAAaF,cAAc,aAAa;IAC9C,MAAMG,UAAUD,WAAW,MAAM,CAAC,CAACE,OAASH,SAAS,MAAM,EAAE,SAASG,KAAK,EAAE;IAC7E,MAAMC,cAAcC,gBAAgBN,cAAc,WAAW;IAE7D,OAAO;QACL,GAAGF,IAAI;QACP,SAASK,QAAQ,GAAG,CAAC,CAACC;YACpB,MAAMG,MAAM;gBACV,cAAcH,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;YACA,IAAIA,KAAK,EAAE,KAAKI,WACZD,IAAY,YAAY,GAAG,CAACE;gBAC5B,MAAMC,UAAUL,YAAY,IAAI,CAAC,CAACM,IAAMA,EAAE,EAAE,KAAKF;gBAEjD,OAAOC,SAAS,SAASD;YAC3B;YAGF,OAAOF;QACT;IACF;AACF"}
@@ -0,0 +1,15 @@
1
+ import type { ColumnsDefine } from '@visactor/vtable';
2
+ /**
3
+ * 从树形结构中提取所有叶子节点的ID
4
+ */
5
+ export declare function extractLeafIds<T extends {
6
+ id: string;
7
+ }>(tree: T[]): Set<string>;
8
+ export declare const treeTreeToColumns: <T extends {
9
+ id: string;
10
+ alias?: string;
11
+ }, U extends {
12
+ id: string;
13
+ alias?: string;
14
+ children?: (T | U)[];
15
+ }>(tree: (T | U)[], callback?: (node: T | U) => object) => ColumnsDefine[];
@@ -0,0 +1,35 @@
1
+ import { findTreeNodesBy } from "../../../../utils/index.js";
2
+ function extractLeafIds(tree) {
3
+ const leafNodes = findTreeNodesBy(tree, ()=>true);
4
+ return new Set(leafNodes.map((node)=>node.id));
5
+ }
6
+ const treeTreeToColumns = (tree, callback)=>{
7
+ const result = tree.map((item)=>{
8
+ if ('children' in item && Array.isArray(item.children)) {
9
+ const groupNode = item;
10
+ const field = groupNode.id;
11
+ const title = groupNode.alias ?? groupNode.id;
12
+ const props = callback?.(groupNode) || {};
13
+ return {
14
+ field,
15
+ title,
16
+ columns: treeTreeToColumns(item.children, callback),
17
+ ...props
18
+ };
19
+ }
20
+ {
21
+ const field = item.id;
22
+ const title = item.alias ?? item.id;
23
+ const props = callback?.(item) || {};
24
+ return {
25
+ field,
26
+ title,
27
+ ...props
28
+ };
29
+ }
30
+ });
31
+ return result || [];
32
+ };
33
+ export { extractLeafIds, treeTreeToColumns };
34
+
35
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/utils.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/utils.ts"],"sourcesContent":["import type { ColumnsDefine } from '@visactor/vtable'\nimport { findTreeNodesBy } from 'src/pipeline/utils'\n\n/**\n * 从树形结构中提取所有叶子节点的ID\n */\nexport function extractLeafIds<T extends { id: string }>(tree: T[]): Set<string> {\n const leafNodes = findTreeNodesBy(tree, () => true)\n return new Set(leafNodes.map((node) => node.id))\n}\n\nexport const treeTreeToColumns = <\n T extends { id: string; alias?: string },\n U extends { id: string; alias?: string; children?: (T | U)[] },\n>(\n tree: (T | U)[],\n callback?: (node: T | U) => object,\n): ColumnsDefine[] => {\n const result = tree.map((item) => {\n if ('children' in item && Array.isArray(item.children)) {\n const groupNode = item as unknown as U\n const field = groupNode.id\n const title = groupNode.alias ?? groupNode.id\n const props = callback?.(groupNode) || {}\n // group\n return {\n field,\n title,\n columns: treeTreeToColumns(item.children, callback),\n ...props,\n }\n } else {\n const field = item.id\n const title = item.alias ?? item.id\n const props = callback?.(item) || {}\n // leaf\n return {\n field,\n title,\n ...props,\n }\n }\n }) as unknown as ColumnsDefine[]\n\n return result || []\n}\n"],"names":["extractLeafIds","tree","leafNodes","findTreeNodesBy","Set","node","treeTreeToColumns","callback","result","item","Array","groupNode","field","title","props"],"mappings":";AAMO,SAASA,eAAyCC,IAAS;IAChE,MAAMC,YAAYC,gBAAgBF,MAAM,IAAM;IAC9C,OAAO,IAAIG,IAAIF,UAAU,GAAG,CAAC,CAACG,OAASA,KAAK,EAAE;AAChD;AAEO,MAAMC,oBAAoB,CAI/BL,MACAM;IAEA,MAAMC,SAASP,KAAK,GAAG,CAAC,CAACQ;QACvB,IAAI,cAAcA,QAAQC,MAAM,OAAO,CAACD,KAAK,QAAQ,GAAG;YACtD,MAAME,YAAYF;YAClB,MAAMG,QAAQD,UAAU,EAAE;YAC1B,MAAME,QAAQF,UAAU,KAAK,IAAIA,UAAU,EAAE;YAC7C,MAAMG,QAAQP,WAAWI,cAAc,CAAC;YAExC,OAAO;gBACLC;gBACAC;gBACA,SAASP,kBAAkBG,KAAK,QAAQ,EAAEF;gBAC1C,GAAGO,KAAK;YACV;QACF;QAAO;YACL,MAAMF,QAAQH,KAAK,EAAE;YACrB,MAAMI,QAAQJ,KAAK,KAAK,IAAIA,KAAK,EAAE;YACnC,MAAMK,QAAQP,WAAWE,SAAS,CAAC;YAEnC,OAAO;gBACLG;gBACAC;gBACA,GAAGC,KAAK;YACV;QACF;IACF;IAEA,OAAON,UAAU,EAAE;AACrB"}
@@ -1,17 +1,52 @@
1
+ import { intl } from "../../../../../i18n/index.js";
1
2
  import { findAllMeasures } from "../../../../utils/index.js";
2
3
  const dataConfig = (spec, context)=>{
3
- const { advancedVSeed } = context;
4
+ const { advancedVSeed, vseed } = context;
4
5
  const measures = findAllMeasures(advancedVSeed.measureTree);
5
6
  const aggregationRules = measures.map((measure)=>({
6
7
  field: measure.id,
7
8
  aggregationType: 'NONE',
8
9
  indicatorKey: measure.id
9
10
  }));
11
+ const dataConfigObj = {
12
+ aggregationRules
13
+ };
14
+ const { totals } = vseed;
15
+ if (totals) {
16
+ const grandTotalLabel = intl.i18n`总计`;
17
+ const subTotalLabel = intl.i18n`小计`;
18
+ const dimensionIds = (advancedVSeed.dimensionTree || []).map((dim)=>dim.id);
19
+ dataConfigObj.totals = {};
20
+ if (totals.row) {
21
+ const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
22
+ const normalizedRowSubDimensions = totals.row.showSubTotals && (!rowSubDimensions || 0 === rowSubDimensions.length) ? dimensionIds.length > 0 ? [
23
+ dimensionIds[0]
24
+ ] : [] : rowSubDimensions;
25
+ dataConfigObj.totals.row = {
26
+ showGrandTotals: totals.row.showGrandTotals ?? false,
27
+ showSubTotals: totals.row.showSubTotals ?? false,
28
+ subTotalsDimensions: normalizedRowSubDimensions,
29
+ grandTotalLabel,
30
+ subTotalLabel
31
+ };
32
+ }
33
+ if (totals.column) {
34
+ const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
35
+ const normalizedColumnSubDimensions = totals.column.showSubTotals && (!columnSubDimensions || 0 === columnSubDimensions.length) ? dimensionIds.length > 0 ? [
36
+ dimensionIds[0]
37
+ ] : [] : columnSubDimensions;
38
+ dataConfigObj.totals.column = {
39
+ showGrandTotals: totals.column.showGrandTotals ?? false,
40
+ showSubTotals: totals.column.showSubTotals ?? false,
41
+ subTotalsDimensions: normalizedColumnSubDimensions,
42
+ grandTotalLabel,
43
+ subTotalLabel
44
+ };
45
+ }
46
+ }
10
47
  return {
11
48
  ...spec,
12
- dataConfig: {
13
- aggregationRules
14
- }
49
+ dataConfig: dataConfigObj
15
50
  };
16
51
  };
17
52
  export { dataConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotDataConfig.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts"],"sourcesContent":["import { findAllMeasures } from 'src/pipeline/utils'\nimport type { PivotTableSpecPipe } from 'src/types'\n\nexport const dataConfig: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measures = findAllMeasures(advancedVSeed.measureTree)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'NONE',\n indicatorKey: measure.id,\n }))\n\n return {\n ...spec,\n dataConfig: {\n aggregationRules,\n },\n }\n}\n"],"names":["dataConfig","spec","context","advancedVSeed","measures","findAllMeasures","aggregationRules","measure"],"mappings":";AAGO,MAAMA,aAAiC,CAACC,MAAMC;IACnD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,WAAWC,gBAAgBF,cAAc,WAAW;IAE1D,MAAMG,mBAAmBF,SAAS,GAAG,CAAC,CAACG,UAAa;YAClD,OAAOA,QAAQ,EAAE;YACjB,iBAAiB;YACjB,cAAcA,QAAQ,EAAE;QAC1B;IAEA,OAAO;QACL,GAAGN,IAAI;QACP,YAAY;YACVK;QACF;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotDataConfig.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts"],"sourcesContent":["import { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { PivotTable, PivotTableSpecPipe } from 'src/types'\n\nexport const dataConfig: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const measures = findAllMeasures(advancedVSeed.measureTree)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'NONE',\n indicatorKey: measure.id,\n }))\n\n const dataConfigObj: any = {\n aggregationRules,\n }\n\n // 处理totals配置\n const { totals } = vseed as PivotTable\n if (totals) {\n const grandTotalLabel = intl.i18n`总计`\n const subTotalLabel = intl.i18n`小计`\n const dimensionIds = (advancedVSeed.dimensionTree || []).map((dim) => dim.id)\n\n dataConfigObj.totals = {}\n\n // 处理行配置\n if (totals.row) {\n const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedRowSubDimensions =\n totals.row.showSubTotals && (!rowSubDimensions || rowSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : rowSubDimensions\n\n dataConfigObj.totals.row = {\n showGrandTotals: totals.row.showGrandTotals ?? false,\n showSubTotals: totals.row.showSubTotals ?? false,\n subTotalsDimensions: normalizedRowSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n\n // 处理列配置\n if (totals.column) {\n const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedColumnSubDimensions =\n totals.column.showSubTotals && (!columnSubDimensions || columnSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : columnSubDimensions\n\n dataConfigObj.totals.column = {\n showGrandTotals: totals.column.showGrandTotals ?? false,\n showSubTotals: totals.column.showSubTotals ?? false,\n subTotalsDimensions: normalizedColumnSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n }\n\n return {\n ...spec,\n dataConfig: dataConfigObj,\n }\n}\n"],"names":["dataConfig","spec","context","advancedVSeed","vseed","measures","findAllMeasures","aggregationRules","measure","dataConfigObj","totals","grandTotalLabel","intl","subTotalLabel","dimensionIds","dim","rowSubDimensions","normalizedRowSubDimensions","columnSubDimensions","normalizedColumnSubDimensions"],"mappings":";;AAIO,MAAMA,aAAiC,CAACC,MAAMC;IACnD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAMG,WAAWC,gBAAgBH,cAAc,WAAW;IAE1D,MAAMI,mBAAmBF,SAAS,GAAG,CAAC,CAACG,UAAa;YAClD,OAAOA,QAAQ,EAAE;YACjB,iBAAiB;YACjB,cAAcA,QAAQ,EAAE;QAC1B;IAEA,MAAMC,gBAAqB;QACzBF;IACF;IAGA,MAAM,EAAEG,MAAM,EAAE,GAAGN;IACnB,IAAIM,QAAQ;QACV,MAAMC,kBAAkBC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrC,MAAMC,gBAAgBD,KAAK,IAAI,CAAC,EAAE,CAAC;QACnC,MAAME,eAAgBX,AAAAA,CAAAA,cAAc,aAAa,IAAI,EAAC,EAAG,GAAG,CAAC,CAACY,MAAQA,IAAI,EAAE;QAE5EN,cAAc,MAAM,GAAG,CAAC;QAGxB,IAAIC,OAAO,GAAG,EAAE;YACd,MAAMM,mBAAmBN,OAAO,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YAC/F,MAAME,6BACJP,OAAO,GAAG,CAAC,aAAa,IAAK,EAACM,oBAAoBA,AAA4B,MAA5BA,iBAAiB,MAAM,AAAK,IAC1EF,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJE;YAENP,cAAc,MAAM,CAAC,GAAG,GAAG;gBACzB,iBAAiBC,OAAO,GAAG,CAAC,eAAe,IAAI;gBAC/C,eAAeA,OAAO,GAAG,CAAC,aAAa,IAAI;gBAC3C,qBAAqBO;gBACrBN;gBACAE;YACF;QACF;QAGA,IAAIH,OAAO,MAAM,EAAE;YACjB,MAAMQ,sBAAsBR,OAAO,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YACrG,MAAMI,gCACJT,OAAO,MAAM,CAAC,aAAa,IAAK,EAACQ,uBAAuBA,AAA+B,MAA/BA,oBAAoB,MAAM,AAAK,IACnFJ,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJI;YAENT,cAAc,MAAM,CAAC,MAAM,GAAG;gBAC5B,iBAAiBC,OAAO,MAAM,CAAC,eAAe,IAAI;gBAClD,eAAeA,OAAO,MAAM,CAAC,aAAa,IAAI;gBAC9C,qBAAqBS;gBACrBR;gBACAE;YACF;QACF;IACF;IAEA,OAAO;QACL,GAAGZ,IAAI;QACP,YAAYQ;IACd;AACF"}
@@ -7,7 +7,7 @@ import { zEncoding } from './properties/encoding';
7
7
  import { zDatasetReshapeInfo } from './properties/datasetReshapeInfo';
8
8
  import { zTheme, zCustomThemeConfig } from './properties/theme';
9
9
  import { type Config } from './properties/config';
10
- import { zAnalysis, zAnnotation, zRegressionLine, zMarkStyle, zPage } from './properties';
10
+ import { zAnalysis, zAnnotation, zRegressionLine, zMarkStyle, zPage, type PivotTableTotals } from './properties';
11
11
  import { zLocale } from './i18n';
12
12
  import { zCellStyle } from './properties/cellStyle/cellStyle';
13
13
  export type AdvancedVSeed = {
@@ -32,5 +32,6 @@ export type AdvancedVSeed = {
32
32
  annotation: z.infer<typeof zAnnotation>;
33
33
  locale: z.infer<typeof zLocale>;
34
34
  regressionLine: z.infer<typeof zRegressionLine>;
35
+ totals?: PivotTableTotals;
35
36
  };
36
37
  export declare const zAdvancedVSeed: z.ZodType<AdvancedVSeed>;
@@ -7,7 +7,7 @@ import { zEncoding } from "./properties/encoding/index.js";
7
7
  import { zDatasetReshapeInfo } from "./properties/datasetReshapeInfo/index.js";
8
8
  import { zCustomThemeConfig, zTheme } from "./properties/theme/index.js";
9
9
  import { zConfig } from "./properties/config/index.js";
10
- import { zAnalysis, zAnnotation, zMarkStyle, zPage, zRegressionLine } from "./properties/index.js";
10
+ import { zAnalysis, zAnnotation, zMarkStyle, zPage, zPivotTableTotals, zRegressionLine } from "./properties/index.js";
11
11
  import { zLocale } from "./i18n/index.js";
12
12
  import { zCellStyle } from "./properties/cellStyle/cellStyle.js";
13
13
  const zAdvancedVSeed = z.object({
@@ -31,7 +31,8 @@ const zAdvancedVSeed = z.object({
31
31
  customTheme: zCustomThemeConfig,
32
32
  annotation: zAnnotation,
33
33
  locale: zLocale,
34
- regressionLine: zRegressionLine
34
+ regressionLine: zRegressionLine,
35
+ totals: zPivotTableTotals.optional()
35
36
  });
36
37
  export { zAdvancedVSeed };
37
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"types/advancedVSeed.js","sources":["webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensions, zDimensionTree } from './properties/dimensions'\nimport { zMeasures, zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig, type Config } from './properties/config'\nimport { zAnalysis, zAnnotation, zRegressionLine, zMarkStyle, zPage } from './properties'\nimport { zLocale } from './i18n'\nimport { zCellStyle } from './properties/cellStyle/cellStyle'\n\nexport type AdvancedVSeed = {\n chartType: z.infer<typeof zChartType>\n dataset: z.infer<typeof zDataset>\n datasetReshapeInfo: z.infer<typeof zDatasetReshapeInfo>\n pivotAllDatasetReshapeInfo: z.infer<typeof zDatasetReshapeInfo>\n dimensions?: z.infer<typeof zDimensions>\n measures?: z.infer<typeof zMeasures>\n reshapeMeasures?: z.infer<typeof zMeasures>[]\n reshapeDimensions?: z.infer<typeof zDimensions>\n measureTree?: z.infer<typeof zMeasureTree>\n dimensionTree?: z.infer<typeof zDimensionTree>\n encoding: z.infer<typeof zEncoding>\n page?: z.infer<typeof zPage>\n config: Config\n analysis: z.infer<typeof zAnalysis>\n theme: z.infer<typeof zTheme>\n markStyle: z.infer<typeof zMarkStyle>\n cellStyle: z.infer<typeof zCellStyle>\n customTheme: z.infer<typeof zCustomThemeConfig>\n annotation: z.infer<typeof zAnnotation>\n locale: z.infer<typeof zLocale>\n regressionLine: z.infer<typeof zRegressionLine>\n}\n\nexport const zAdvancedVSeed: z.ZodType<AdvancedVSeed> = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n pivotAllDatasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensions.optional(),\n measures: zMeasures.optional(),\n reshapeMeasures: z.array(zMeasures).optional(),\n reshapeDimensions: zDimensions.optional(),\n measureTree: zMeasureTree.optional(), // 现在只有表格中可能会配置这种树状结构\n dimensionTree: zDimensionTree.optional(), // 现在只有表格中可能会配置这种树状结构\n encoding: zEncoding,\n page: zPage.optional(),\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n cellStyle: zCellStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n regressionLine: zRegressionLine,\n})\n"],"names":["zAdvancedVSeed","z","zChartType","zDataset","zDatasetReshapeInfo","zDimensions","zMeasures","zMeasureTree","zDimensionTree","zEncoding","zPage","zConfig","zAnalysis","zTheme","zMarkStyle","zCellStyle","zCustomThemeConfig","zAnnotation","zLocale","zRegressionLine"],"mappings":";;;;;;;;;;;;AAqCO,MAAMA,iBAA2CC,EAAE,MAAM,CAAC;IAC/D,WAAWC;IACX,SAASC;IACT,oBAAoBC;IACpB,4BAA4BA;IAC5B,YAAYC,YAAY,QAAQ;IAChC,UAAUC,UAAU,QAAQ;IAC5B,iBAAiBL,EAAE,KAAK,CAACK,WAAW,QAAQ;IAC5C,mBAAmBD,YAAY,QAAQ;IACvC,aAAaE,aAAa,QAAQ;IAClC,eAAeC,eAAe,QAAQ;IACtC,UAAUC;IACV,MAAMC,MAAM,QAAQ;IACpB,QAAQC;IACR,UAAUC;IACV,OAAOC;IACP,WAAWC;IACX,WAAWC;IACX,aAAaC;IACb,YAAYC;IACZ,QAAQC;IACR,gBAAgBC;AAClB"}
1
+ {"version":3,"file":"types/advancedVSeed.js","sources":["webpack://@visactor/vseed/./src/types/advancedVSeed.ts"],"sourcesContent":["import { z } from 'zod'\nimport { zChartType } from './properties/chartType'\nimport { zDataset } from './properties/dataset'\nimport { zDimensions, zDimensionTree } from './properties/dimensions'\nimport { zMeasures, zMeasureTree } from './properties/measures'\nimport { zEncoding } from './properties/encoding'\nimport { zDatasetReshapeInfo } from './properties/datasetReshapeInfo'\nimport { zTheme, zCustomThemeConfig } from './properties/theme'\nimport { zConfig, type Config } from './properties/config'\nimport {\n zAnalysis,\n zAnnotation,\n zRegressionLine,\n zMarkStyle,\n zPage,\n zPivotTableTotals,\n type PivotTableTotals,\n} from './properties'\nimport { zLocale } from './i18n'\nimport { zCellStyle } from './properties/cellStyle/cellStyle'\n\nexport type AdvancedVSeed = {\n chartType: z.infer<typeof zChartType>\n dataset: z.infer<typeof zDataset>\n datasetReshapeInfo: z.infer<typeof zDatasetReshapeInfo>\n pivotAllDatasetReshapeInfo: z.infer<typeof zDatasetReshapeInfo>\n dimensions?: z.infer<typeof zDimensions>\n measures?: z.infer<typeof zMeasures>\n reshapeMeasures?: z.infer<typeof zMeasures>[]\n reshapeDimensions?: z.infer<typeof zDimensions>\n measureTree?: z.infer<typeof zMeasureTree>\n dimensionTree?: z.infer<typeof zDimensionTree>\n encoding: z.infer<typeof zEncoding>\n page?: z.infer<typeof zPage>\n config: Config\n analysis: z.infer<typeof zAnalysis>\n theme: z.infer<typeof zTheme>\n markStyle: z.infer<typeof zMarkStyle>\n cellStyle: z.infer<typeof zCellStyle>\n customTheme: z.infer<typeof zCustomThemeConfig>\n annotation: z.infer<typeof zAnnotation>\n locale: z.infer<typeof zLocale>\n regressionLine: z.infer<typeof zRegressionLine>\n totals?: PivotTableTotals\n}\n\nexport const zAdvancedVSeed: z.ZodType<AdvancedVSeed> = z.object({\n chartType: zChartType,\n dataset: zDataset,\n datasetReshapeInfo: zDatasetReshapeInfo,\n pivotAllDatasetReshapeInfo: zDatasetReshapeInfo,\n dimensions: zDimensions.optional(),\n measures: zMeasures.optional(),\n reshapeMeasures: z.array(zMeasures).optional(),\n reshapeDimensions: zDimensions.optional(),\n measureTree: zMeasureTree.optional(), // 现在只有表格中可能会配置这种树状结构\n dimensionTree: zDimensionTree.optional(), // 现在只有表格中可能会配置这种树状结构\n encoding: zEncoding,\n page: zPage.optional(),\n config: zConfig,\n analysis: zAnalysis,\n theme: zTheme,\n markStyle: zMarkStyle,\n cellStyle: zCellStyle,\n customTheme: zCustomThemeConfig,\n annotation: zAnnotation,\n locale: zLocale,\n regressionLine: zRegressionLine,\n totals: zPivotTableTotals.optional(),\n})\n"],"names":["zAdvancedVSeed","z","zChartType","zDataset","zDatasetReshapeInfo","zDimensions","zMeasures","zMeasureTree","zDimensionTree","zEncoding","zPage","zConfig","zAnalysis","zTheme","zMarkStyle","zCellStyle","zCustomThemeConfig","zAnnotation","zLocale","zRegressionLine","zPivotTableTotals"],"mappings":";;;;;;;;;;;;AA8CO,MAAMA,iBAA2CC,EAAE,MAAM,CAAC;IAC/D,WAAWC;IACX,SAASC;IACT,oBAAoBC;IACpB,4BAA4BA;IAC5B,YAAYC,YAAY,QAAQ;IAChC,UAAUC,UAAU,QAAQ;IAC5B,iBAAiBL,EAAE,KAAK,CAACK,WAAW,QAAQ;IAC5C,mBAAmBD,YAAY,QAAQ;IACvC,aAAaE,aAAa,QAAQ;IAClC,eAAeC,eAAe,QAAQ;IACtC,UAAUC;IACV,MAAMC,MAAM,QAAQ;IACpB,QAAQC;IACR,UAAUC;IACV,OAAOC;IACP,WAAWC;IACX,WAAWC;IACX,aAAaC;IACb,YAAYC;IACZ,QAAQC;IACR,gBAAgBC;IAChB,QAAQC,kBAAkB,QAAQ;AACpC"}