@visactor/vseed 0.4.12 → 0.4.14

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 (176) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +2 -1
  4. package/dist/esm/dataReshape/dataReshapeByEncoding.js +7 -2
  5. package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
  6. package/dist/esm/dataReshape/unfoldDimensions.d.ts +1 -0
  7. package/dist/esm/dataReshape/unfoldDimensions.js +5 -4
  8. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +11 -3
  10. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +4 -2
  12. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +2 -1
  14. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +8 -3
  16. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +4 -2
  18. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +11 -2
  20. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +4 -2
  22. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +2 -1
  24. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +8 -2
  26. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +4 -2
  28. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  29. package/dist/esm/pipeline/spec/chart/pipeline/area.js +6 -2
  30. package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
  31. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js +6 -2
  32. package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
  33. package/dist/esm/pipeline/spec/chart/pipeline/bar.js +6 -2
  34. package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
  35. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js +6 -2
  36. package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js +6 -2
  38. package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipeline/column.js +6 -2
  40. package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js +6 -2
  42. package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
  43. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js +6 -2
  44. package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
  45. package/dist/esm/pipeline/spec/chart/pipeline/donut.js +6 -2
  46. package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
  47. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js +6 -2
  48. package/dist/esm/pipeline/spec/chart/pipeline/funnel.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipeline/line.js +6 -2
  50. package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
  51. package/dist/esm/pipeline/spec/chart/pipeline/pie.js +6 -2
  52. package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js +3 -1
  54. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
  55. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js +3 -1
  56. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js +3 -1
  58. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js +3 -1
  60. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js.map +1 -1
  61. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js +3 -1
  62. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js.map +1 -1
  63. package/dist/esm/pipeline/spec/chart/pipeline/radar.js +6 -2
  64. package/dist/esm/pipeline/spec/chart/pipeline/radar.js.map +1 -1
  65. package/dist/esm/pipeline/spec/chart/pipeline/rose.js +6 -2
  66. package/dist/esm/pipeline/spec/chart/pipeline/rose.js.map +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js +6 -2
  68. package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js.map +1 -1
  69. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +14 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js +27 -1
  72. package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js.map +1 -1
  73. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -2
  74. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  75. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +15 -2
  76. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  77. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +3 -3
  78. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +4 -3
  79. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  80. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js +1 -1
  81. package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js.map +1 -1
  82. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js +18 -1
  83. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js.map +1 -1
  84. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +1 -1
  85. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  86. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js +1 -1
  87. package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
  88. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +1 -1
  89. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
  90. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js +18 -1
  91. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js.map +1 -1
  92. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js +12 -4
  93. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js.map +1 -1
  94. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js +4 -2
  95. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js.map +1 -1
  96. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js +5 -0
  97. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
  98. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js +5 -0
  99. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
  100. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +5 -3
  101. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +51 -32
  102. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  103. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +8 -7
  104. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  105. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +15 -2
  106. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  107. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -2
  108. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  109. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js +6 -5
  110. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js.map +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -2
  112. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  113. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js +14 -6
  114. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js.map +1 -1
  115. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +6 -2
  116. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  117. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +8 -3
  118. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  119. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +8 -3
  120. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  121. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  122. package/dist/esm/pipeline/utils/constant.js +1 -0
  123. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  124. package/dist/esm/pipeline/utils/format/createFormatterByDimension.d.ts +2 -0
  125. package/dist/esm/pipeline/utils/format/createFormatterByDimension.js +10 -0
  126. package/dist/esm/pipeline/utils/format/createFormatterByDimension.js.map +1 -0
  127. package/dist/esm/pipeline/utils/format/createTimeFormatter.d.ts +2 -0
  128. package/dist/esm/pipeline/utils/format/createTimeFormatter.js +154 -0
  129. package/dist/esm/pipeline/utils/format/createTimeFormatter.js.map +1 -0
  130. package/dist/esm/pipeline/utils/format/index.d.ts +2 -0
  131. package/dist/esm/pipeline/utils/format/index.js +2 -0
  132. package/dist/esm/types/chartType/area/zArea.d.ts +12 -0
  133. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +12 -0
  134. package/dist/esm/types/chartType/bar/zBar.d.ts +12 -0
  135. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +12 -0
  136. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +12 -0
  137. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +12 -0
  138. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +12 -0
  139. package/dist/esm/types/chartType/column/zColumn.d.ts +12 -0
  140. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +12 -0
  141. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +12 -0
  142. package/dist/esm/types/chartType/donut/zDonut.d.ts +12 -0
  143. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +12 -0
  144. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +12 -0
  145. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +12 -0
  146. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +12 -0
  147. package/dist/esm/types/chartType/line/zLine.d.ts +12 -0
  148. package/dist/esm/types/chartType/pie/zPie.d.ts +12 -0
  149. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +12 -0
  150. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +12 -0
  151. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +12 -0
  152. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +12 -0
  153. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +12 -0
  154. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +12 -0
  155. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +12 -0
  156. package/dist/esm/types/chartType/radar/zRadar.d.ts +12 -0
  157. package/dist/esm/types/chartType/rose/zRose.d.ts +12 -0
  158. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +12 -0
  159. package/dist/esm/types/chartType/scatter/zScatter.d.ts +12 -0
  160. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +12 -0
  161. package/dist/esm/types/chartType/table/zTable.d.ts +12 -0
  162. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +12 -0
  163. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +1 -1
  164. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  165. package/dist/esm/types/properties/dimensions/baseDimension.d.ts +5 -0
  166. package/dist/esm/types/properties/dimensions/zDimensions.d.ts +36 -0
  167. package/dist/esm/types/properties/dimensions/zDimensions.js +3 -1
  168. package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
  169. package/dist/esm/types/properties/format/index.d.ts +1 -0
  170. package/dist/esm/types/properties/format/index.js +1 -0
  171. package/dist/esm/types/properties/format/timeFormat.d.ts +20 -0
  172. package/dist/esm/types/properties/format/timeFormat.js +16 -0
  173. package/dist/esm/types/properties/format/timeFormat.js.map +1 -0
  174. package/dist/umd/index.js +592 -147
  175. package/dist/umd/index.js.map +1 -1
  176. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { pipe, unique, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimensions,\n FoldInfo,\n Measures,\n VChartSpecPipe,\n TooltipConfig,\n UnfoldInfo,\n Dimension,\n Measure,\n} from 'src/types'\nimport { MeasureId, MeasureName, ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltip: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const {\n measures = [],\n datasetReshapeInfo,\n chartType,\n dimensions = [],\n encoding,\n reshapeMeasures = [],\n } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType as 'line'] as { tooltip: TooltipConfig }\n const { tooltip = { enable: true } } = baseConfig\n const { enable = true } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: !!enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures as Measures, foldInfo, unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(\n encoding.tooltip || [],\n encoding.color || [],\n measures,\n foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createDimensionContent = (\n tooltips: string[],\n colors: string[],\n measures: Measures = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n hasMultiMeasureGroup: boolean,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\n const { encodingColor } = unfoldInfo\n\n const hasMeasureTooltip = tooltips.some((d) => measures.find((item) => item.id === d))\n const hasMeasureIdInColor = colors.some((d) =>\n measures.find((item) => item.id === d || d === MeasureId || d === MeasureName),\n )\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: !hasMeasureTooltip\n ? (v: unknown) => {\n const datum = v as Datum\n const colorId = datum?.[encodingColor]\n const colorAlias = unfoldInfo.colorIdMap?.[colorId]?.alias ?? colorId\n\n // 指标组合场景, 保证的 Tooltip 中包含指标.\n if (hasMultiMeasureGroup) {\n // 图例 Color 内已有指标, 则无需添加指标, 避免重复\n if (hasMeasureIdInColor) {\n return colorAlias\n }\n // 指标需添加到 Tooltip 中.\n const meaAlias = (datum && (datum[MeasureName] as string)) || ''\n return unique([colorAlias, meaAlias]).join('-')\n }\n\n return colorAlias\n }\n : (v: unknown) => {\n const datum = v as Datum\n const key = (datum && (datum[measureId] as string)) || ''\n return foldMap[key] ?? key\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions = [],\n measures: Measures = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Measure) => item.id),\n uniqueBy((item: Measure) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item: Measure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","enable","foldInfo","unfoldInfo","getTooltipStyle","createMarkContent","createDimensionContent","updateTooltipElement","tooltips","colors","hasMultiMeasureGroup","measureId","measureValue","foldMap","encodingColor","hasMeasureTooltip","d","item","hasMeasureIdInColor","MeasureId","MeasureName","v","datum","key","colorId","colorAlias","meaAlias","unique","value","id","measure","findMeasureById","formatter","createFormatterByMeasure","dims","pipe","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName","String"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { pipe, unique, uniqueBy } from 'remeda'\nimport { Separator } from 'src/dataReshape'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimensions,\n FoldInfo,\n Measures,\n VChartSpecPipe,\n TooltipConfig,\n UnfoldInfo,\n Dimension,\n Measure,\n Locale,\n Encoding,\n} from 'src/types'\nimport { MeasureId, MeasureName, ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltip =\n (tooltipOptions?: { titleEncoding?: keyof Encoding }): VChartSpecPipe =>\n (spec, context) => {\n const result = { ...spec }\n if (!context) {\n return result\n }\n const { advancedVSeed, vseed } = context\n const {\n measures = [],\n datasetReshapeInfo,\n chartType,\n dimensions = [],\n encoding,\n reshapeMeasures = [],\n } = advancedVSeed\n const baseConfig = advancedVSeed.config?.[chartType as 'line'] as { tooltip: TooltipConfig }\n const { tooltip = { enable: true } } = baseConfig ?? {}\n const { enable = true } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n const { titleEncoding } = tooltipOptions || {}\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: !!enable,\n group: {\n title: {\n visible: false,\n },\n },\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n vseed.measures as Measures,\n foldInfo,\n unfoldInfo,\n advancedVSeed.locale,\n ),\n },\n dimension: {\n title: {\n visible: true,\n value: titleEncoding\n ? (datum?: Datum) => {\n if (!datum) {\n return ''\n }\n const dimIds = encoding[titleEncoding] || []\n const formatted = dimIds.map((id) => {\n const dim = dimensions.find((item) => item.id === id)\n if (!dim) {\n return datum?.[id] as string\n }\n const formatter = createFormatterByDimension(dim, advancedVSeed.locale)\n return formatter(datum?.[id] as string | number)\n })\n return formatted.join(Separator)\n }\n : undefined,\n },\n content: createDimensionContent(\n encoding.tooltip || [],\n encoding.color || [],\n measures,\n foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n\n updateElement: updateTooltipElement,\n }\n return result\n }\n\nexport const createDimensionContent = (\n tooltips: string[],\n colors: string[],\n measures: Measures = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n hasMultiMeasureGroup: boolean,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\n const { encodingColor } = unfoldInfo\n\n const hasMeasureTooltip = tooltips.some((d) => measures.find((item) => item.id === d))\n const hasMeasureIdInColor = colors.some((d) =>\n measures.find((item) => item.id === d || d === MeasureId || d === MeasureName),\n )\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: !hasMeasureTooltip\n ? (v: unknown) => {\n const datum = v as Datum\n const colorId = datum?.[encodingColor]\n const colorAlias = unfoldInfo.colorIdMap?.[colorId]?.alias ?? colorId\n\n // 指标组合场景, 保证的 Tooltip 中包含指标.\n if (hasMultiMeasureGroup) {\n // 图例 Color 内已有指标, 则无需添加指标, 避免重复\n if (hasMeasureIdInColor) {\n return colorAlias\n }\n // 指标需添加到 Tooltip 中.\n const meaAlias = (datum && (datum[MeasureName] as string)) || ''\n return unique([colorAlias, meaAlias]).join('-')\n }\n\n return colorAlias\n }\n : (v: unknown) => {\n const datum = v as Datum\n const key = (datum && (datum[measureId] as string)) || ''\n return foldMap[key] ?? key\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions = [],\n measures: Measures = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale?: Locale,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Measure) => item.id),\n uniqueBy((item: Measure) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n const formatter = createFormatterByDimension(item, locale)\n return datum ? formatter(datum[item.id] as string | number) : ''\n },\n }))\n\n const meaContent = meas.map((item: Measure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","tooltipOptions","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","enable","foldInfo","unfoldInfo","titleEncoding","getTooltipStyle","createMarkContent","datum","dimIds","formatted","id","dim","item","formatter","createFormatterByDimension","Separator","undefined","createDimensionContent","updateTooltipElement","tooltips","colors","hasMultiMeasureGroup","measureId","measureValue","foldMap","encodingColor","hasMeasureTooltip","d","hasMeasureIdInColor","MeasureId","MeasureName","v","key","colorId","colorAlias","meaAlias","unique","value","measure","findMeasureById","createFormatterByMeasure","locale","dims","pipe","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName","String"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { isNullish, pipe, uniqueBy } from "remeda";
2
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
2
+ import { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ColorEncoding, LowerWhisker, MeasureId, MeasureName, MedianMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, UpperWhisker, XEncoding } from "../../../../../dataReshape/index.js";
4
4
  import { getTooltipStyle } from "./tooltipStyle.js";
5
5
  import { intl } from "../../../../../i18n/index.js";
@@ -17,7 +17,7 @@ const tooltipBoxplot = (spec, context)=>{
17
17
  ...spec
18
18
  };
19
19
  const { advancedVSeed, vseed } = context;
20
- const { chartType, dimensions = [], encoding, datasetReshapeInfo } = advancedVSeed;
20
+ const { chartType, dimensions = [], encoding, datasetReshapeInfo, locale } = advancedVSeed;
21
21
  const baseConfig = advancedVSeed.config[chartType];
22
22
  const { tooltip = {
23
23
  enable: true
@@ -42,7 +42,7 @@ const tooltipBoxplot = (spec, context)=>{
42
42
  title: {
43
43
  visible: false
44
44
  },
45
- content: createMarkContent(encoding.tooltip || [], dimensions, encoding),
45
+ content: createMarkContent(encoding.tooltip || [], dimensions, encoding, locale),
46
46
  updateContent: (prev, data)=>{
47
47
  const datum = data?.[0]?.datum?.[0];
48
48
  if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {
@@ -74,13 +74,13 @@ const tooltipBoxplot = (spec, context)=>{
74
74
  title: {
75
75
  visible: true
76
76
  },
77
- content: createDimensionContent(dimensions, meas, unfoldInfo, measureAliasMapping[MedianMeasureId])
77
+ content: createDimensionContent(dimensions, meas, unfoldInfo, measureAliasMapping[MedianMeasureId], locale)
78
78
  },
79
79
  updateElement: updateTooltipElement
80
80
  };
81
81
  return result;
82
82
  };
83
- const createMarkContent = (tooltip, dimensions, encoding)=>{
83
+ const createMarkContent = (tooltip, dimensions, encoding, locale)=>{
84
84
  const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
85
85
  const dimContent = dims.map((item)=>({
86
86
  visible: true,
@@ -92,7 +92,8 @@ const createMarkContent = (tooltip, dimensions, encoding)=>{
92
92
  if (encoding.color?.includes(item.id)) return datum?.[ColorEncoding];
93
93
  if (encoding.x?.includes(item.id)) return datum?.[XEncoding];
94
94
  }
95
- return datum?.[item.id];
95
+ const formatter = createFormatterByDimension(item, locale);
96
+ return formatter(datum?.[item.id]);
96
97
  }
97
98
  }));
98
99
  const defaultContent = boxPlotMeasureKeys.map((key)=>({
@@ -110,7 +111,7 @@ const createMarkContent = (tooltip, dimensions, encoding)=>{
110
111
  defaultContent
111
112
  ];
112
113
  };
113
- const createDimensionContent = (dimensions, measures, unfoldInfo, medianAlias, hasMultiMeasureGroup)=>{
114
+ const createDimensionContent = (dimensions, measures, unfoldInfo, medianAlias, locale, hasMultiMeasureGroup)=>{
114
115
  const { encodingColor } = unfoldInfo;
115
116
  return [
116
117
  {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Dimension,\n Dimensions,\n Encoding,\n VChartSpecPipe,\n Tooltip,\n Measures,\n FoldInfo,\n UnfoldInfo,\n} from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n LowerWhisker,\n MeasureId,\n MeasureName,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n UpperWhisker,\n XEncoding,\n} from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { intl } from 'src/i18n'\nimport { updateTooltipElement } from './tooltipElement'\n\nconst boxPlotMeasureKeys = [UpperWhisker, Q3MeasureValue, MedianMeasureId, Q1MeasureValue, LowerWhisker]\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipBoxplot: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { chartType, dimensions = [], encoding, datasetReshapeInfo } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType as 'boxPlot'] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const meas = (vseed.measures ?? []) as Measures\n const valueMeasure = meas.find((item) => item.encoding === 'value' || isNullish(item.encoding))\n const defaultFormatter = valueMeasure ? createFormatterByMeasure(valueMeasure) : (v: unknown) => v\n const measureAliasMapping: Record<string, string> = {\n [OutliersMeasureId]: intl.i18n`异常点`,\n [UpperWhisker]: intl.i18n`上边界`,\n [Q3MeasureValue]: intl.i18n`上四分位数`,\n [MedianMeasureId]: intl.i18n`中位数`,\n [Q1MeasureValue]: intl.i18n`下四分位数`,\n [LowerWhisker]: intl.i18n`下边界`,\n }\n const { unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n style: getTooltipStyle(tooltip),\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding),\n updateContent: (prev: ITooltipLineActual[] | undefined, data: TooltipData | undefined) => {\n const datum = (data as any)?.[0]?.datum?.[0]\n\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n const tooltipItems: ITooltipLineActual[] = (prev ?? []).filter(\n (item: any) => !boxPlotMeasureKeys.includes(item.key as string),\n )\n const outerlierMeasure = meas.find((item) => item.id === OutliersMeasureId)\n const formatter = outerlierMeasure ? createFormatterByMeasure(outerlierMeasure) : defaultFormatter\n\n tooltipItems.push({\n ...(tooltipItems[0] as any),\n key: outerlierMeasure?.alias ?? measureAliasMapping[OutliersMeasureId],\n value: formatter(datum?.[VCHART_OUTLIER_KEY] as number) as string,\n } as ITooltipLineActual)\n\n return tooltipItems\n }\n\n return (prev ?? []).map((entry) => {\n if (boxPlotMeasureKeys.includes((entry as any).key as string)) {\n const mea = meas.find((item) => item.id === (entry as any).key)\n const formatter = mea ? createFormatterByMeasure(mea) : defaultFormatter\n\n return {\n ...(entry as any),\n value: formatter(datum?.[(entry as any).key] as number) as string,\n key: mea?.alias ?? measureAliasMapping[entry?.key as string] ?? (entry as any).key,\n }\n }\n\n return entry\n }) as ITooltipLineActual[]\n },\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, meas, unfoldInfo, measureAliasMapping[MedianMeasureId]),\n },\n updateElement: updateTooltipElement,\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n return datum?.[item.id] as string\n },\n }))\n\n const defaultContent = boxPlotMeasureKeys.map((key: string) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key,\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[key] as string | number\n },\n }\n })\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n\nconst createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n unfoldInfo: UnfoldInfo,\n medianAlias: string,\n hasMultiMeasureGroup?: boolean,\n) => {\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: dimensions.some((d) => d.encoding === 'color')\n ? (v: unknown) => {\n const datum = v as Datum\n const key = (datum && (datum[encodingColor] as string)) || ''\n const colorKey = `${unfoldInfo.colorIdMap[key].alias ?? key}(${medianAlias})`\n\n if (hasMultiMeasureGroup) {\n const id = datum[MeasureId] as string\n const measure = findMeasureById(measures, id)\n\n return measure ? `${colorKey}-${measure.alias ?? id}` : colorKey\n }\n\n return colorKey\n }\n : (v: unknown) => {\n const datum = v as Datum\n return `${datum[MeasureName] ?? datum[MeasureId]}(${medianAlias})`\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[MedianMeasureId] as string | number // dimension tooltip 中默认显示中位数\n const id = datum[MeasureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n"],"names":["boxPlotMeasureKeys","UpperWhisker","Q3MeasureValue","MedianMeasureId","Q1MeasureValue","LowerWhisker","VCHART_OUTLIER_KEY","tooltipBoxplot","spec","context","result","advancedVSeed","vseed","chartType","dimensions","encoding","datasetReshapeInfo","baseConfig","tooltip","enable","meas","valueMeasure","item","isNullish","defaultFormatter","createFormatterByMeasure","v","measureAliasMapping","OutliersMeasureId","intl","unfoldInfo","getTooltipStyle","createMarkContent","prev","data","datum","tooltipItems","outerlierMeasure","formatter","entry","mea","createDimensionContent","updateTooltipElement","dims","pipe","uniqueBy","dimContent","ColorEncoding","XEncoding","defaultContent","key","measures","medianAlias","hasMultiMeasureGroup","encodingColor","d","colorKey","id","MeasureId","measure","findMeasureById","MeasureName","value"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Dimension,\n Dimensions,\n Encoding,\n VChartSpecPipe,\n Tooltip,\n Measures,\n FoldInfo,\n UnfoldInfo,\n Locale,\n} from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n LowerWhisker,\n MeasureId,\n MeasureName,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n UpperWhisker,\n XEncoding,\n} from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { intl } from 'src/i18n'\nimport { updateTooltipElement } from './tooltipElement'\n\nconst boxPlotMeasureKeys = [UpperWhisker, Q3MeasureValue, MedianMeasureId, Q1MeasureValue, LowerWhisker]\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipBoxplot: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { chartType, dimensions = [], encoding, datasetReshapeInfo, locale } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType as 'boxPlot'] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const meas = (vseed.measures ?? []) as Measures\n const valueMeasure = meas.find((item) => item.encoding === 'value' || isNullish(item.encoding))\n const defaultFormatter = valueMeasure ? createFormatterByMeasure(valueMeasure) : (v: unknown) => v\n const measureAliasMapping: Record<string, string> = {\n [OutliersMeasureId]: intl.i18n`异常点`,\n [UpperWhisker]: intl.i18n`上边界`,\n [Q3MeasureValue]: intl.i18n`上四分位数`,\n [MedianMeasureId]: intl.i18n`中位数`,\n [Q1MeasureValue]: intl.i18n`下四分位数`,\n [LowerWhisker]: intl.i18n`下边界`,\n }\n const { unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n style: getTooltipStyle(tooltip),\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, encoding as Encoding, locale),\n updateContent: (prev: ITooltipLineActual[] | undefined, data: TooltipData | undefined) => {\n const datum = (data as any)?.[0]?.datum?.[0]\n\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n const tooltipItems: ITooltipLineActual[] = (prev ?? []).filter(\n (item: any) => !boxPlotMeasureKeys.includes(item.key as string),\n )\n const outerlierMeasure = meas.find((item) => item.id === OutliersMeasureId)\n const formatter = outerlierMeasure ? createFormatterByMeasure(outerlierMeasure) : defaultFormatter\n\n tooltipItems.push({\n ...(tooltipItems[0] as any),\n key: outerlierMeasure?.alias ?? measureAliasMapping[OutliersMeasureId],\n value: formatter(datum?.[VCHART_OUTLIER_KEY] as number) as string,\n } as ITooltipLineActual)\n\n return tooltipItems\n }\n\n return (prev ?? []).map((entry) => {\n if (boxPlotMeasureKeys.includes((entry as any).key as string)) {\n const mea = meas.find((item) => item.id === (entry as any).key)\n const formatter = mea ? createFormatterByMeasure(mea) : defaultFormatter\n\n return {\n ...(entry as any),\n value: formatter(datum?.[(entry as any).key] as number) as string,\n key: mea?.alias ?? measureAliasMapping[entry?.key as string] ?? (entry as any).key,\n }\n }\n\n return entry\n }) as ITooltipLineActual[]\n },\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, meas, unfoldInfo, measureAliasMapping[MedianMeasureId], locale),\n },\n updateElement: updateTooltipElement,\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (tooltip: string[], dimensions: Dimensions, encoding: Encoding, locale?: Locale) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: Dimension) => item.id),\n uniqueBy((item: Dimension) => item.alias),\n )\n\n const dimContent = dims.map((item: Dimension) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias ?? item.id,\n value: (datum: Datum | undefined) => {\n if (!isNullish(datum?.[VCHART_OUTLIER_KEY])) {\n if (encoding.color?.includes(item.id)) {\n return datum?.[ColorEncoding] as string\n }\n if (encoding.x?.includes(item.id)) {\n return datum?.[XEncoding] as string\n }\n }\n\n const formatter = createFormatterByDimension(item, locale)\n return formatter(datum?.[item.id] as string | number)\n },\n }))\n\n const defaultContent = boxPlotMeasureKeys.map((key: string) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key,\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return datum[key] as string | number\n },\n }\n })\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n\nconst createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n unfoldInfo: UnfoldInfo,\n medianAlias: string,\n locale?: Locale,\n hasMultiMeasureGroup?: boolean,\n) => {\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: dimensions.some((d) => d.encoding === 'color')\n ? (v: unknown) => {\n const datum = v as Datum\n const key = (datum && (datum[encodingColor] as string)) || ''\n const colorKey = `${unfoldInfo.colorIdMap[key].alias ?? key}(${medianAlias})`\n\n if (hasMultiMeasureGroup) {\n const id = datum[MeasureId] as string\n const measure = findMeasureById(measures, id)\n\n return measure ? `${colorKey}-${measure.alias ?? id}` : colorKey\n }\n\n return colorKey\n }\n : (v: unknown) => {\n const datum = v as Datum\n return `${datum[MeasureName] ?? datum[MeasureId]}(${medianAlias})`\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[MedianMeasureId] as string | number // dimension tooltip 中默认显示中位数\n const id = datum[MeasureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n"],"names":["boxPlotMeasureKeys","UpperWhisker","Q3MeasureValue","MedianMeasureId","Q1MeasureValue","LowerWhisker","VCHART_OUTLIER_KEY","tooltipBoxplot","spec","context","result","advancedVSeed","vseed","chartType","dimensions","encoding","datasetReshapeInfo","locale","baseConfig","tooltip","enable","meas","valueMeasure","item","isNullish","defaultFormatter","createFormatterByMeasure","v","measureAliasMapping","OutliersMeasureId","intl","unfoldInfo","getTooltipStyle","createMarkContent","prev","data","datum","tooltipItems","outerlierMeasure","formatter","entry","mea","createDimensionContent","updateTooltipElement","dims","pipe","uniqueBy","dimContent","ColorEncoding","XEncoding","createFormatterByDimension","defaultContent","key","measures","medianAlias","hasMultiMeasureGroup","encodingColor","d","colorKey","id","MeasureId","measure","findMeasureById","MeasureName","value"],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { createDimensionContent, createMarkContent } from "./tooltip.js";
2
2
  import { getTooltipStyle } from "./tooltipStyle.js";
3
3
  import { updateTooltipElement } from "./tooltipElement.js";
4
+ import { createFormatterByDimension } from "../../../../utils/index.js";
5
+ import { Separator } from "../../../../../dataReshape/index.js";
4
6
  const tooltipOfDualAxisSeries = (options)=>(spec, context)=>{
5
7
  const result = {
6
8
  ...spec
@@ -19,11 +21,22 @@ const tooltipOfDualAxisSeries = (options)=>(spec, context)=>{
19
21
  title: {
20
22
  visible: false
21
23
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, options.foldInfo, unfoldInfo)
24
+ content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, options.foldInfo, unfoldInfo, advancedVSeed.locale)
23
25
  },
24
26
  dimension: {
25
27
  title: {
26
- visible: true
28
+ visible: true,
29
+ value: (datum)=>{
30
+ if (!datum) return '';
31
+ const dimIds = encoding.x || [];
32
+ const formatted = dimIds.map((id)=>{
33
+ const dim = dimensions.find((item)=>item.id === id);
34
+ if (!dim) return datum?.[id];
35
+ const formatter = createFormatterByDimension(dim, advancedVSeed.locale);
36
+ return formatter(datum?.[id]);
37
+ });
38
+ return formatted.join(Separator);
39
+ }
27
40
  },
28
41
  content: createDimensionContent(encoding.tooltip || [], encoding.color || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
29
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { createDimensionContent, createMarkContent } from './tooltip'\nimport type { VChartSpecPipe, Tooltip, Measures, DualAxisOptions } from 'src/types'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipOfDualAxisSeries = (options: DualAxisOptions): VChartSpecPipe => {\n return (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const {\n measures = [],\n datasetReshapeInfo,\n chartType,\n dimensions = [],\n encoding,\n reshapeMeasures = [],\n } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n vseed.measures as Measures,\n options.foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(\n encoding.tooltip || [],\n encoding.color || [],\n measures,\n options.foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n }\n return result\n }\n}\n\nexport const tooltipDualAxis: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n updateElement: updateTooltipElement,\n }\n return result\n}\n"],"names":["tooltipOfDualAxisSeries","options","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","tooltip","enable","unfoldInfo","createMarkContent","createDimensionContent","tooltipDualAxis","getTooltipStyle","updateTooltipElement"],"mappings":";;;AAKO,MAAMA,0BAA0B,CAACC,UAC/B,CAACC,MAAMC;QACZ,MAAMC,SAAS;YAAE,GAAGF,IAAI;QAAC;QACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;QACjC,MAAM,EACJI,WAAW,EAAE,EACbC,kBAAkB,EAClBC,SAAS,EACTC,aAAa,EAAE,EACfC,QAAQ,EACRC,kBAAkB,EAAE,EACrB,GAAGP;QACJ,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;QAClD,MAAM,EAAEK,UAAU;YAAE,QAAQ;QAAK,CAAC,EAAE,GAAGD;QACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;QAEnB,MAAME,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;QAEnDJ,OAAO,OAAO,GAAG;YACf,SAASW;YACT,MAAM;gBACJ,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAJ,MAAM,QAAQ,EACdL,QAAQ,QAAQ,EAChBe;YAEJ;YACA,WAAW;gBACT,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,uBACPP,SAAS,OAAO,IAAI,EAAE,EACtBA,SAAS,KAAK,IAAI,EAAE,EACpBJ,UACAN,QAAQ,QAAQ,EAChBe,YACAJ,gBAAgB,MAAM,GAAG;YAE7B;QACF;QACA,OAAOR;IACT;AAGK,MAAMe,kBAAkC,CAACjB,MAAMC;IACpD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEM,SAAS,EAAE,GAAGJ;IACtB,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IAEvCT,OAAO,OAAO,GAAG;QACf,OAAOgB,gBAAgBN;QACvB,eAAeO;IACjB;IACA,OAAOjB;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { createDimensionContent, createMarkContent } from './tooltip'\nimport type { VChartSpecPipe, Tooltip, Measures, DualAxisOptions } from 'src/types'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\nimport { createFormatterByDimension } from 'src/pipeline/utils'\nimport { Separator } from 'src/dataReshape'\n\nexport const tooltipOfDualAxisSeries = (options: DualAxisOptions): VChartSpecPipe => {\n return (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const {\n measures = [],\n datasetReshapeInfo,\n chartType,\n dimensions = [],\n encoding,\n reshapeMeasures = [],\n } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n vseed.measures as Measures,\n options.foldInfo,\n unfoldInfo,\n advancedVSeed.locale,\n ),\n },\n dimension: {\n title: {\n visible: true,\n value: (datum?: Record<string, unknown>) => {\n if (!datum) {\n return ''\n }\n const dimIds = encoding.x || []\n const formatted = dimIds.map((id) => {\n const dim = dimensions.find((item) => item.id === id)\n if (!dim) {\n return datum?.[id] as string\n }\n const formatter = createFormatterByDimension(dim, advancedVSeed.locale)\n return formatter(datum?.[id] as string | number)\n })\n return formatted.join(Separator)\n },\n },\n content: createDimensionContent(\n encoding.tooltip || [],\n encoding.color || [],\n measures,\n options.foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n }\n return result\n }\n}\n\nexport const tooltipDualAxis: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n updateElement: updateTooltipElement,\n }\n return result\n}\n"],"names":["tooltipOfDualAxisSeries","options","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","tooltip","enable","unfoldInfo","createMarkContent","datum","dimIds","formatted","id","dim","item","formatter","createFormatterByDimension","Separator","createDimensionContent","tooltipDualAxis","getTooltipStyle","updateTooltipElement"],"mappings":";;;;;AAOO,MAAMA,0BAA0B,CAACC,UAC/B,CAACC,MAAMC;QACZ,MAAMC,SAAS;YAAE,GAAGF,IAAI;QAAC;QACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;QACjC,MAAM,EACJI,WAAW,EAAE,EACbC,kBAAkB,EAClBC,SAAS,EACTC,aAAa,EAAE,EACfC,QAAQ,EACRC,kBAAkB,EAAE,EACrB,GAAGP;QACJ,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;QAClD,MAAM,EAAEK,UAAU;YAAE,QAAQ;QAAK,CAAC,EAAE,GAAGD;QACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;QAEnB,MAAME,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;QAEnDJ,OAAO,OAAO,GAAG;YACf,SAASW;YACT,MAAM;gBACJ,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAJ,MAAM,QAAQ,EACdL,QAAQ,QAAQ,EAChBe,YACAX,cAAc,MAAM;YAExB;YACA,WAAW;gBACT,OAAO;oBACL,SAAS;oBACT,OAAO,CAACa;wBACN,IAAI,CAACA,OACH,OAAO;wBAET,MAAMC,SAASR,SAAS,CAAC,IAAI,EAAE;wBAC/B,MAAMS,YAAYD,OAAO,GAAG,CAAC,CAACE;4BAC5B,MAAMC,MAAMZ,WAAW,IAAI,CAAC,CAACa,OAASA,KAAK,EAAE,KAAKF;4BAClD,IAAI,CAACC,KACH,OAAOJ,OAAO,CAACG,GAAG;4BAEpB,MAAMG,YAAYC,2BAA2BH,KAAKjB,cAAc,MAAM;4BACtE,OAAOmB,UAAUN,OAAO,CAACG,GAAG;wBAC9B;wBACA,OAAOD,UAAU,IAAI,CAACM;oBACxB;gBACF;gBACA,SAASC,uBACPhB,SAAS,OAAO,IAAI,EAAE,EACtBA,SAAS,KAAK,IAAI,EAAE,EACpBJ,UACAN,QAAQ,QAAQ,EAChBe,YACAJ,gBAAgB,MAAM,GAAG;YAE7B;QACF;QACA,OAAOR;IACT;AAGK,MAAMwB,kBAAkC,CAAC1B,MAAMC;IACpD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEM,SAAS,EAAE,GAAGJ;IACtB,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IAEvCT,OAAO,OAAO,GAAG;QACf,OAAOyB,gBAAgBf;QACvB,eAAegB;IACjB;IACA,OAAO1B;AACT"}
@@ -1,5 +1,5 @@
1
1
  import { uniqueBy } from "remeda";
2
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
2
+ import { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  import { getTooltipStyle } from "./tooltipStyle.js";
5
5
  import { updateTooltipElement } from "./tooltipElement.js";
@@ -45,7 +45,8 @@ const createMarkContent = (tooltip, dimensions, measures = [], locale, foldInfo)
45
45
  },
46
46
  value: (v)=>{
47
47
  const datum = v;
48
- return datum && datum[item.id];
48
+ const formatter = createFormatterByDimension(item, locale);
49
+ return datum ? formatter(datum[item.id]) : '';
49
50
  }
50
51
  }));
51
52
  const meaContent = meas.map((item)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipHeatmap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures as Measures, locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures = [],\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","getTooltipStyle","createMarkContent","updateTooltipElement","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipHeatmap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures as Measures, locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures = [],\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n const formatter = createFormatterByDimension(item, locale)\n return datum ? formatter(datum[item.id] as string | number) : ''\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","getTooltipStyle","createMarkContent","updateTooltipElement","measures","dims","uniqueBy","item","meas","dimContent","v","datum","formatter","createFormatterByDimension","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","createFormatterByMeasure","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { tooltip as external_tooltip_js_tooltip } from "./tooltip.js";
2
2
  import { pipe, uniqueBy } from "remeda";
3
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
+ import { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
4
4
  const tooltipHierarchy = (spec, context)=>{
5
- const result = external_tooltip_js_tooltip(spec, context);
5
+ const result = external_tooltip_js_tooltip()(spec, context);
6
6
  const { advancedVSeed, vseed } = context;
7
7
  const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed;
8
8
  const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
@@ -13,12 +13,12 @@ const tooltipHierarchy = (spec, context)=>{
13
13
  visible: true,
14
14
  value: (val)=>val?.datum?.map((data)=>data.name).join(' / ')
15
15
  },
16
- content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, foldInfo, unfoldInfo)
16
+ content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, foldInfo, unfoldInfo, advancedVSeed.locale)
17
17
  };
18
18
  }
19
19
  return result;
20
20
  };
21
- const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, unfoldInfo)=>{
21
+ const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, unfoldInfo, locale)=>{
22
22
  const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias), uniqueBy((item)=>item.alias));
23
23
  const meas = pipe(measures.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
24
24
  const dimContent = dims.map((item)=>({
@@ -32,7 +32,8 @@ const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, un
32
32
  },
33
33
  value: (v)=>{
34
34
  const datum = v;
35
- return datum && datum[item.id];
35
+ const formatter = createFormatterByDimension(item, locale);
36
+ return datum ? formatter(datum[item.id]) : '';
36
37
  }
37
38
  }));
38
39
  const defaultContent = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.ts"],"sourcesContent":["import type { Datum, FoldInfo, HierarchyDimension, HierarchyMeasure, UnfoldInfo, VChartSpecPipe } from 'src/types'\nimport { tooltip as commonTooltip } from './tooltip'\nimport { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\n\nexport const tooltipHierarchy: VChartSpecPipe = (spec, context) => {\n // Reuse common tooltip logic\n const result = commonTooltip(spec, context)\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (result.tooltip) {\n if (!result.tooltip.mark) {\n result.tooltip.mark = {}\n }\n\n result.tooltip.mark = {\n title: {\n visible: true,\n value: (val: any) => {\n return val?.datum?.map((data: any) => data.name).join(' / ')\n },\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions as HierarchyDimension[],\n vseed.measures as HierarchyMeasure[],\n foldInfo,\n unfoldInfo,\n ),\n }\n }\n\n return result\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: HierarchyDimension[] = [],\n measures: HierarchyMeasure[] = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyDimension) => item.id),\n uniqueBy((item: HierarchyDimension) => item.alias),\n uniqueBy((item: HierarchyDimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyMeasure) => item.id),\n uniqueBy((item: HierarchyMeasure) => item.alias),\n )\n\n const dimContent = dims.map((item: HierarchyDimension) => ({\n visible: (datum: Datum) => {\n return !!datum[item.id]\n },\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n const meaContent = meas.map((item: HierarchyMeasure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum) {\n return ''\n }\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n return [...dimContent, defaultContent, ...meaContent] as object[]\n}\n"],"names":["tooltipHierarchy","spec","context","result","commonTooltip","advancedVSeed","vseed","datasetReshapeInfo","dimensions","encoding","foldInfo","unfoldInfo","val","data","createMarkContent","tooltip","measures","dims","pipe","item","uniqueBy","meas","dimContent","datum","v","defaultContent","measureName","colorName","measureId","measureValue","value","id","measure","findMeasureById","String","formatter","createFormatterByMeasure","meaContent"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.ts"],"sourcesContent":["import type {\n Datum,\n FoldInfo,\n HierarchyDimension,\n HierarchyMeasure,\n Locale,\n UnfoldInfo,\n VChartSpecPipe,\n} from 'src/types'\nimport { tooltip as commonTooltip } from './tooltip'\nimport { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\n\nexport const tooltipHierarchy: VChartSpecPipe = (spec, context) => {\n // Reuse common tooltip logic\n const result = commonTooltip()(spec, context)\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (result.tooltip) {\n if (!result.tooltip.mark) {\n result.tooltip.mark = {}\n }\n\n result.tooltip.mark = {\n title: {\n visible: true,\n value: (val: any) => {\n return val?.datum?.map((data: any) => data.name).join(' / ')\n },\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions as HierarchyDimension[],\n vseed.measures as HierarchyMeasure[],\n foldInfo,\n unfoldInfo,\n advancedVSeed.locale,\n ),\n }\n }\n\n return result\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: HierarchyDimension[] = [],\n measures: HierarchyMeasure[] = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale?: Locale,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyDimension) => item.id),\n uniqueBy((item: HierarchyDimension) => item.alias),\n uniqueBy((item: HierarchyDimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyMeasure) => item.id),\n uniqueBy((item: HierarchyMeasure) => item.alias),\n )\n\n const dimContent = dims.map((item: HierarchyDimension) => ({\n visible: (datum: Datum) => {\n return !!datum[item.id]\n },\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n const formatter = createFormatterByDimension(item, locale)\n return datum ? formatter(datum[item.id] as string | number) : ''\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n const meaContent = meas.map((item: HierarchyMeasure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum) {\n return ''\n }\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n return [...dimContent, defaultContent, ...meaContent] as object[]\n}\n"],"names":["tooltipHierarchy","spec","context","result","commonTooltip","advancedVSeed","vseed","datasetReshapeInfo","dimensions","encoding","foldInfo","unfoldInfo","val","data","createMarkContent","tooltip","measures","locale","dims","pipe","item","uniqueBy","meas","dimContent","datum","v","formatter","createFormatterByDimension","defaultContent","measureName","colorName","measureId","measureValue","value","id","measure","findMeasureById","String","createFormatterByMeasure","meaContent"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { uniqueBy } from "remeda";
2
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
2
+ import { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  import { getTooltipStyle } from "./tooltipStyle.js";
5
5
  import { updateTooltipElement } from "./tooltipElement.js";
@@ -46,7 +46,8 @@ const createMarkContent = (tooltip, dimensions, measures = [], locale, foldInfoL
46
46
  },
47
47
  value: (v)=>{
48
48
  const datum = v;
49
- return datum && datum[item.id];
49
+ const formatter = createFormatterByDimension(item, locale);
50
+ return datum ? formatter(datum[item.id]) : '';
50
51
  }
51
52
  }));
52
53
  const meaContent = meas.map((item)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipScatter: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures as Measures, locale, foldInfoList),\n updateContent: (prev: Datum[] = []) => {\n return uniqueBy(prev, (entry) => `${String(entry.key)}::${String(entry.value)}`)\n },\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures = [],\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = datum[measureId] as string\n\n return foldMap[id] ?? id\n },\n // key: Object.values(foldInfo.foldMap)[0],\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipScatter","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","getTooltipStyle","createMarkContent","prev","uniqueBy","entry","String","updateTooltipElement","measures","dims","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","foldInfo","measureId","foldMap","measureValue"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipScatter: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions = [], encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures as Measures, locale, foldInfoList),\n updateContent: (prev: Datum[] = []) => {\n return uniqueBy(prev, (entry) => `${String(entry.key)}::${String(entry.value)}`)\n },\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures = [],\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n const formatter = createFormatterByDimension(item, locale)\n return datum ? formatter(datum[item.id] as string | number) : ''\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = datum[measureId] as string\n\n return foldMap[id] ?? id\n },\n // key: Object.values(foldInfo.foldMap)[0],\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipScatter","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","getTooltipStyle","createMarkContent","prev","uniqueBy","entry","String","updateTooltipElement","measures","dims","item","meas","dimContent","v","datum","formatter","createFormatterByDimension","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","createFormatterByMeasure","foldMeaContent","foldInfo","measureId","foldMap","measureValue"],"mappings":"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"}
@@ -1,24 +1,31 @@
1
1
  import { tooltip as external_tooltip_js_tooltip } from "./tooltip.js";
2
2
  import { pipe, uniqueBy } from "remeda";
3
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
+ import { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
4
4
  const tooltipTreeMap = (spec, context)=>{
5
- const result = external_tooltip_js_tooltip(spec, context);
5
+ const result = external_tooltip_js_tooltip()(spec, context);
6
6
  const { advancedVSeed, vseed } = context;
7
7
  const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed;
8
8
  const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
9
9
  if (result.tooltip) {
10
10
  if (!result.tooltip.mark) result.tooltip.mark = {};
11
+ const formatterList = (encoding.hierarchy || []).map((id)=>{
12
+ const dim = dimensions.find((item)=>item.id === id);
13
+ return createFormatterByDimension(dim, advancedVSeed.locale);
14
+ });
11
15
  result.tooltip.mark = {
12
16
  title: {
13
17
  visible: true,
14
- value: (val)=>val?.datum?.map((data)=>data.name).join(' / ')
18
+ value: (val)=>val?.datum?.map((data, index)=>{
19
+ if (formatterList[index]) return formatterList[index](data.name);
20
+ return data.name;
21
+ }).join(' / ')
15
22
  },
16
- content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, foldInfo, unfoldInfo)
23
+ content: createMarkContent(encoding.tooltip || [], dimensions, vseed.measures, foldInfo, unfoldInfo, advancedVSeed.locale)
17
24
  };
18
25
  }
19
26
  return result;
20
27
  };
21
- const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, unfoldInfo)=>{
28
+ const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, unfoldInfo, locale)=>{
22
29
  const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias), uniqueBy((item)=>item.alias));
23
30
  const meas = pipe(measures.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
24
31
  const dimContent = dims.map((item)=>({
@@ -38,7 +45,8 @@ const createMarkContent = (tooltip, dimensions = [], measures = [], foldInfo, un
38
45
  value: (v)=>{
39
46
  const { depth } = v;
40
47
  const datum = v?.datum[depth];
41
- return datum && datum[item.id];
48
+ const formatter = createFormatterByDimension(item, locale);
49
+ return datum ? formatter(datum[item.id]) : '';
42
50
  }
43
51
  }));
44
52
  const defaultContent = {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.ts"],"sourcesContent":["import type { Datum, FoldInfo, HierarchyDimension, HierarchyMeasure, UnfoldInfo, VChartSpecPipe } from 'src/types'\nimport { tooltip as commonTooltip } from './tooltip'\nimport { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\n\nexport const tooltipTreeMap: VChartSpecPipe = (spec, context) => {\n // Reuse common tooltip logic\n const result = commonTooltip(spec, context)\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (result.tooltip) {\n if (!result.tooltip.mark) {\n result.tooltip.mark = {}\n }\n\n result.tooltip.mark = {\n title: {\n visible: true,\n value: (val: any) => {\n return val?.datum?.map((data: any) => data.name).join(' / ')\n },\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions as HierarchyDimension[],\n vseed.measures as HierarchyMeasure[],\n foldInfo,\n unfoldInfo,\n ),\n }\n }\n\n return result\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: HierarchyDimension[] = [],\n measures: HierarchyMeasure[] = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyDimension) => item.id),\n uniqueBy((item: HierarchyDimension) => item.alias),\n uniqueBy((item: HierarchyDimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyMeasure) => item.id),\n uniqueBy((item: HierarchyMeasure) => item.alias),\n )\n\n const dimContent = dims.map((item: HierarchyDimension) => ({\n visible: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n return !!datum[item.id]\n },\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n return datum && (datum[item.id] as string)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n const { measureId, measureValue } = foldInfo\n\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n const meaContent = meas.map((item: HierarchyMeasure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum) {\n return ''\n }\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n return [...dimContent, defaultContent, ...meaContent] as object[]\n}\n"],"names":["tooltipTreeMap","spec","context","result","commonTooltip","advancedVSeed","vseed","datasetReshapeInfo","dimensions","encoding","foldInfo","unfoldInfo","val","data","createMarkContent","tooltip","measures","dims","pipe","item","uniqueBy","meas","dimContent","v","depth","datum","defaultContent","measureName","colorName","measureId","measureValue","value","id","measure","findMeasureById","String","formatter","createFormatterByMeasure","meaContent"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.ts"],"sourcesContent":["import type {\n Datum,\n FoldInfo,\n HierarchyDimension,\n HierarchyMeasure,\n Locale,\n UnfoldInfo,\n VChartSpecPipe,\n} from 'src/types'\nimport { tooltip as commonTooltip } from './tooltip'\nimport { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByDimension, createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\n\nexport const tooltipTreeMap: VChartSpecPipe = (spec, context) => {\n // Reuse common tooltip logic\n const result = commonTooltip()(spec, context)\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, dimensions = [], encoding } = advancedVSeed\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0]\n\n if (result.tooltip) {\n if (!result.tooltip.mark) {\n result.tooltip.mark = {}\n }\n const formatterList = (encoding.hierarchy || []).map((id) => {\n const dim = dimensions.find((item) => item.id === id)\n return createFormatterByDimension(dim, advancedVSeed.locale)\n })\n\n result.tooltip.mark = {\n title: {\n visible: true,\n value: (val: any) => {\n return val?.datum\n ?.map((data: any, index: number) => {\n if (formatterList[index]) {\n return formatterList[index](data.name)\n }\n return data.name\n })\n .join(' / ')\n },\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions as HierarchyDimension[],\n vseed.measures as HierarchyMeasure[],\n foldInfo,\n unfoldInfo,\n advancedVSeed.locale,\n ),\n }\n }\n\n return result\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: HierarchyDimension[] = [],\n measures: HierarchyMeasure[] = [],\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale?: Locale,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyDimension) => item.id),\n uniqueBy((item: HierarchyDimension) => item.alias),\n uniqueBy((item: HierarchyDimension) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item: HierarchyMeasure) => item.id),\n uniqueBy((item: HierarchyMeasure) => item.alias),\n )\n\n const dimContent = dims.map((item: HierarchyDimension) => ({\n visible: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n return !!datum[item.id]\n },\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n const formatter = createFormatterByDimension(item, locale)\n return datum ? formatter(datum[item.id] as string | number) : ''\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n const { measureId, measureValue } = foldInfo\n\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n const meaContent = meas.map((item: HierarchyMeasure) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: Datum) => {\n const { depth } = v\n const datum = v?.datum[depth] as Datum\n\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum) {\n return ''\n }\n const value = datum[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n return [...dimContent, defaultContent, ...meaContent] as object[]\n}\n"],"names":["tooltipTreeMap","spec","context","result","commonTooltip","advancedVSeed","vseed","datasetReshapeInfo","dimensions","encoding","foldInfo","unfoldInfo","formatterList","id","dim","item","createFormatterByDimension","val","data","index","createMarkContent","tooltip","measures","locale","dims","pipe","uniqueBy","meas","dimContent","v","depth","datum","formatter","defaultContent","measureName","colorName","measureId","measureValue","value","measure","findMeasureById","String","createFormatterByMeasure","meaContent"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { isMeasure } from "../../../../utils/index.js";
1
+ import { createFormatterByDimension, isMeasure } from "../../../../utils/index.js";
2
2
  import { treeTreeToColumns } from "./utils.js";
3
3
  const dimensionTreeToColumns = (spec, context)=>{
4
4
  const { advancedVSeed } = context;
@@ -8,7 +8,11 @@ const dimensionTreeToColumns = (spec, context)=>{
8
8
  };
9
9
  const eachNode = (node)=>{
10
10
  if (isMeasure(node)) return {
11
- width: 'auto'
11
+ width: 'auto',
12
+ fieldFormat: (datum)=>{
13
+ const formatter = createFormatterByDimension(node, advancedVSeed.locale);
14
+ return formatter(datum[node.id]);
15
+ }
12
16
  };
13
17
  return {};
14
18
  };
@@ -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 { 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
+ {"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 { createFormatterByDimension, isMeasure } from 'src/pipeline/utils'\nimport type { Datum, 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 fieldFormat: (datum: Datum) => {\n const formatter = createFormatterByDimension(node as Dimension, advancedVSeed.locale)\n return formatter(datum[node.id] as string | number)\n },\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","datum","formatter","createFormatterByDimension","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;YACP,aAAa,CAACE;gBACZ,MAAMC,YAAYC,2BAA2BJ,MAAmBJ,cAAc,MAAM;gBACpF,OAAOO,UAAUD,KAAK,CAACF,KAAK,EAAE,CAAC;YACjC;QACF;QAGF,OAAO,CAAC;IACV;IACA,MAAMK,UAAUC,kBAA6CT,eAAeE;IAE5E,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMO;SAAQ;IAClD;AACF"}
@@ -1,3 +1,4 @@
1
+ import { createFormatterByDimension } from "../../../../utils/index.js";
1
2
  const pivotColumns = (spec, context)=>{
2
3
  const { advancedVSeed } = context;
3
4
  const { encoding } = advancedVSeed;
@@ -5,11 +6,15 @@ const pivotColumns = (spec, context)=>{
5
6
  const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
6
7
  return {
7
8
  ...spec,
8
- columns: columns.map((item)=>({
9
+ columns: columns.map((item)=>{
10
+ const formatter = createFormatterByDimension(item, advancedVSeed.locale);
11
+ return {
9
12
  dimensionKey: item.id,
10
13
  title: item.alias || item.id,
11
- width: 'auto'
12
- }))
14
+ width: 'auto',
15
+ headerFormat: (value)=>formatter(value)
16
+ };
17
+ })
13
18
  };
14
19
  };
15
20
  export { pivotColumns };