@visactor/vseed 0.4.12 → 0.4.13
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.
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +2 -1
- package/dist/esm/dataReshape/dataReshapeByEncoding.js +7 -2
- package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
- package/dist/esm/dataReshape/unfoldDimensions.d.ts +1 -0
- package/dist/esm/dataReshape/unfoldDimensions.js +5 -4
- package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +11 -3
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +4 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +2 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +8 -3
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +4 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +11 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +4 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +2 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +8 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +4 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/area.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/area.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/areaPercent.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/bar.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/barParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/barPercent.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/column.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/column.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/columnParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/columnPercent.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/donut.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/donut.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/funnel.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/funnel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/line.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/line.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/pie.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/pie.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/racePie.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/racePie.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/radar.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/radar.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/rose.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/rose.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js +6 -2
- package/dist/esm/pipeline/spec/chart/pipeline/roseParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +14 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js +27 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/radarAngle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -2
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +15 -2
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +3 -3
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js +4 -3
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelBoxPlot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js +18 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js +18 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js +12 -4
- package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js +4 -2
- package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js +5 -0
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js +5 -0
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +5 -3
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +51 -32
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +8 -7
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +15 -2
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -2
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js +6 -5
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -2
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js +14 -6
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +6 -2
- package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +8 -3
- package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +8 -3
- package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
- package/dist/esm/pipeline/utils/constant.d.ts +1 -0
- package/dist/esm/pipeline/utils/constant.js +1 -0
- package/dist/esm/pipeline/utils/constant.js.map +1 -1
- package/dist/esm/pipeline/utils/format/createFormatterByDimension.d.ts +2 -0
- package/dist/esm/pipeline/utils/format/createFormatterByDimension.js +10 -0
- package/dist/esm/pipeline/utils/format/createFormatterByDimension.js.map +1 -0
- package/dist/esm/pipeline/utils/format/createTimeFormatter.d.ts +2 -0
- package/dist/esm/pipeline/utils/format/createTimeFormatter.js +154 -0
- package/dist/esm/pipeline/utils/format/createTimeFormatter.js.map +1 -0
- package/dist/esm/pipeline/utils/format/index.d.ts +2 -0
- package/dist/esm/pipeline/utils/format/index.js +2 -0
- package/dist/esm/types/chartType/area/zArea.d.ts +12 -0
- package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +12 -0
- package/dist/esm/types/chartType/bar/zBar.d.ts +12 -0
- package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +12 -0
- package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +12 -0
- package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +12 -0
- package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +12 -0
- package/dist/esm/types/chartType/column/zColumn.d.ts +12 -0
- package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +12 -0
- package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +12 -0
- package/dist/esm/types/chartType/donut/zDonut.d.ts +12 -0
- package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +12 -0
- package/dist/esm/types/chartType/funnel/zFunnel.d.ts +12 -0
- package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +12 -0
- package/dist/esm/types/chartType/histogram/zHistogram.d.ts +12 -0
- package/dist/esm/types/chartType/line/zLine.d.ts +12 -0
- package/dist/esm/types/chartType/pie/zPie.d.ts +12 -0
- package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +12 -0
- package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +12 -0
- package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +12 -0
- package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +12 -0
- package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +12 -0
- package/dist/esm/types/chartType/racePie/zRacePie.d.ts +12 -0
- package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +12 -0
- package/dist/esm/types/chartType/radar/zRadar.d.ts +12 -0
- package/dist/esm/types/chartType/rose/zRose.d.ts +12 -0
- package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +12 -0
- package/dist/esm/types/chartType/scatter/zScatter.d.ts +12 -0
- package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +12 -0
- package/dist/esm/types/chartType/table/zTable.d.ts +12 -0
- package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +12 -0
- package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +1 -1
- package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
- package/dist/esm/types/properties/dimensions/baseDimension.d.ts +5 -0
- package/dist/esm/types/properties/dimensions/zDimensions.d.ts +36 -0
- package/dist/esm/types/properties/dimensions/zDimensions.js +3 -1
- package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
- package/dist/esm/types/properties/format/index.d.ts +1 -0
- package/dist/esm/types/properties/format/index.js +1 -0
- package/dist/esm/types/properties/format/timeFormat.d.ts +20 -0
- package/dist/esm/types/properties/format/timeFormat.js +16 -0
- package/dist/esm/types/properties/format/timeFormat.js.map +1 -0
- package/dist/umd/index.js +592 -147
- package/dist/umd/index.js.map +1 -1
- 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":";;;;;AAoBO,MAAMA,kBACX,CAACC,iBACD,CAACC,MAAMC;QACL,MAAMC,SAAS;YAAE,GAAGF,IAAI;QAAC;QACzB,IAAI,CAACC,SACH,OAAOC;QAET,MAAM,EAAEC,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,EAAE,CAACI,UAAoB;QAC9D,MAAM,EAAET,UAAU;YAAE,QAAQ;QAAK,CAAC,EAAE,GAAGa,cAAc,CAAC;QACtD,MAAM,EAAEC,SAAS,IAAI,EAAE,GAAGd;QAC1B,MAAM,EAAEe,QAAQ,EAAEC,UAAU,EAAE,GAAGR,kBAAkB,CAAC,EAAE;QAItD,MAAM,EAAES,aAAa,EAAE,GAAGhB,kBAAkB,CAAC;QAE7CG,OAAO,OAAO,GAAG;YACf,OAAOc,gBAAgBlB;YACvB,SAAS,CAAC,CAACc;YACX,OAAO;gBACL,OAAO;oBACL,SAAS;gBACX;YACF;YACA,MAAM;gBACJ,OAAO;oBACL,SAAS;gBACX;gBACA,SAASK,kBACPR,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAJ,MAAM,QAAQ,EACdS,UACAC,YACAX,cAAc,MAAM;YAExB;YACA,WAAW;gBACT,OAAO;oBACL,SAAS;oBACT,OAAOY,gBACH,CAACG;wBACC,IAAI,CAACA,OACH,OAAO;wBAET,MAAMC,SAASV,QAAQ,CAACM,cAAc,IAAI,EAAE;wBAC5C,MAAMK,YAAYD,OAAO,GAAG,CAAC,CAACE;4BAC5B,MAAMC,MAAMd,WAAW,IAAI,CAAC,CAACe,OAASA,KAAK,EAAE,KAAKF;4BAClD,IAAI,CAACC,KACH,OAAOJ,OAAO,CAACG,GAAG;4BAEpB,MAAMG,YAAYC,2BAA2BH,KAAKnB,cAAc,MAAM;4BACtE,OAAOqB,UAAUN,OAAO,CAACG,GAAG;wBAC9B;wBACA,OAAOD,UAAU,IAAI,CAACM;oBACxB,IACAC;gBACN;gBACA,SAASC,uBACPnB,SAAS,OAAO,IAAI,EAAE,EACtBA,SAAS,KAAK,IAAI,EAAE,EACpBJ,UACAQ,UACAC,YACAJ,gBAAgB,MAAM,GAAG;YAE7B;YAEA,eAAemB;QACjB;QACA,OAAO3B;IACT;AAEK,MAAM0B,yBAAyB,CACpCE,UACAC,QACA1B,WAAqB,EAAE,EACvBQ,UACAC,YACAkB;IAEA,MAAM,EAAEC,SAAS,EAAEC,YAAY,EAAEC,OAAO,EAAE,GAAGtB;IAC7C,MAAM,EAAEuB,aAAa,EAAE,GAAGtB;IAE1B,MAAMuB,oBAAoBP,SAAS,IAAI,CAAC,CAACQ,IAAMjC,SAAS,IAAI,CAAC,CAACkB,OAASA,KAAK,EAAE,KAAKe;IACnF,MAAMC,sBAAsBR,OAAO,IAAI,CAAC,CAACO,IACvCjC,SAAS,IAAI,CAAC,CAACkB,OAASA,KAAK,EAAE,KAAKe,KAAKA,MAAME,aAAaF,MAAMG;IAEpE,OAAO;QACL;YACE,SAAS;YACT,WAAW;YACX,UAAU;YACV,KAAK,AAACJ,oBAmBF,CAACK;gBACC,MAAMxB,QAAQwB;gBACd,MAAMC,MAAOzB,SAAUA,KAAK,CAACe,UAAU,IAAgB;gBACvD,OAAOE,OAAO,CAACQ,IAAI,IAAIA;YACzB,IAtBA,CAACD;gBACC,MAAMxB,QAAQwB;gBACd,MAAME,UAAU1B,OAAO,CAACkB,cAAc;gBACtC,MAAMS,aAAa/B,WAAW,UAAU,EAAE,CAAC8B,QAAQ,EAAE,SAASA;gBAG9D,IAAIZ,sBAAsB;oBAExB,IAAIO,qBACF,OAAOM;oBAGT,MAAMC,WAAY5B,SAAUA,KAAK,CAACuB,YAAY,IAAgB;oBAC9D,OAAOM,OAAO;wBAACF;wBAAYC;qBAAS,EAAE,IAAI,CAAC;gBAC7C;gBAEA,OAAOD;YACT;YAMJ,OAAO,CAACH;gBACN,MAAMxB,QAAQwB;gBACd,IAAI,CAACxB,OACH,OAAO;gBAET,MAAM8B,QAAQ9B,KAAK,CAACgB,aAAa;gBACjC,MAAMb,KAAKH,KAAK,CAACe,UAAU;gBAC3B,MAAMgB,UAAUC,gBAAgB7C,UAAUgB;gBAC1C,MAAMG,YAAY2B,yBAAyBF;gBAC3C,OAAOzB,UAAUwB;YACnB;QACF;KACD;AACH;AAEO,MAAM/B,oBAAoB,CAC/BnB,SACAU,aAAyB,EAAE,EAC3BH,WAAqB,EAAE,EACvBQ,UACAC,YACAsC;IAEA,MAAMC,OAAOC,KACX9C,WAAW,MAAM,CAAC,CAACe,OAASzB,QAAQ,QAAQ,CAACyB,KAAK,EAAE,IACpDgC,SAAS,CAAChC,OAAoBA,KAAK,EAAE,GACrCgC,SAAS,CAAChC,OAAoBA,KAAK,KAAK;IAE1C,MAAMiC,OAAOF,KACXjD,SAAS,MAAM,CAAC,CAACkB,OAASzB,QAAQ,QAAQ,CAACyB,KAAK,EAAE,IAClDgC,SAAS,CAAChC,OAAkBA,KAAK,EAAE,GACnCgC,SAAS,CAAChC,OAAkBA,KAAK,KAAK;IAGxC,MAAMkC,aAAaJ,KAAK,GAAG,CAAC,CAAC9B,OAAqB;YAChD,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACmB;gBACJ,MAAMxB,QAAQwB;gBACd,IAAInB,KAAK,KAAK,IAAIA,KAAK,EAAE,EACvB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAE9B,OAAOL,SAAUA,KAAK,CAACK,KAAK,EAAE,CAAC;YACjC;YACA,OAAO,CAACmB;gBACN,MAAMxB,QAAQwB;gBACd,MAAMlB,YAAYC,2BAA2BF,MAAM6B;gBACnD,OAAOlC,QAAQM,UAAUN,KAAK,CAACK,KAAK,EAAE,CAAC,IAAuB;YAChE;QACF;IAEA,MAAMmC,aAAaF,KAAK,GAAG,CAAC,CAACjC,OAAmB;YAC9C,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACmB;gBACN,MAAMxB,QAAQwB;gBACd,IAAI,CAACxB,OACH,OAAO;gBAET,MAAMG,KAAKE,KAAK,EAAE;gBAClB,IAAI,CAACL,SAAS,CAACA,KAAK,CAACyC,cAAc,IAAI,CAACzC,KAAK,CAACyC,cAAc,EAC1D,OAAO;gBAET,MAAMC,eAAe1C,KAAK,CAACyC,cAAc;gBACzC,MAAMX,QAAQY,YAAY,CAACvC,GAAG;gBAC9B,MAAM4B,UAAUC,gBAAgB7C,UAAUgB;gBAC1C,MAAMG,YAAY2B,yBAAyBF;gBAC3C,OAAOzB,UAAUwB;YACnB;QACF;IAEA,MAAMa,iBAAiB;QACrB,SAAS;QACT,UAAU;QACV,WAAW;QACX,KAAK,CAACnB;YACJ,MAAM,EAAEoB,WAAW,EAAE,GAAGjD;YACxB,MAAM,EAAE,eAAekD,SAAS,EAAE,GAAGjD;YAErC,MAAMI,QAAQwB;YACd,OAAQxB,SAAUA,KAAK,CAAC4C,eAAeC,UAAU,IAAgB;QACnE;QACA,OAAO,CAACrB;YACN,MAAM,EAAET,SAAS,EAAEC,YAAY,EAAE,GAAGrB;YAEpC,MAAMK,QAAQwB;YACd,IAAI,CAACxB,OACH,OAAO;YAET,MAAM8B,QAAQ9B,KAAK,CAACgB,aAAa;YACjC,MAAMb,KAAKH,KAAK,CAACe,UAAU;YAC3B,MAAMgB,UAAUC,gBAAgB7C,UAAUgB;YAC1C,IAAI,CAAC4B,SACH,OAAOe,OAAOhB;YAGhB,MAAMxB,YAAY2B,yBAAyBF;YAC3C,OAAOzB,UAAUwB;QACnB;IACF;IAEA,OAAO;WAAIS;QAAYI;WAAmBH;KAAW;AACvD"}
|
|
@@ -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
|
-
|
|
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":";;;;;;AA8BA,MAAMA,qBAAqB;IAACC;IAAcC;IAAgBC;IAAiBC;IAAgBC;CAAa;AACxG,MAAMC,qBAAqB;AAEpB,MAAMC,iBAAiC,CAACC,MAAMC;IACnD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAEC,aAAa,EAAE,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,MAAM,EAAE,GAAGN;IAC7E,MAAMO,aAAaP,cAAc,MAAM,CAACE,UAAuB;IAC/D,MAAM,EAAEM,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IACnB,MAAME,OAAQT,MAAM,QAAQ,IAAI,EAAE;IAClC,MAAMU,eAAeD,KAAK,IAAI,CAAC,CAACE,OAASA,AAAkB,YAAlBA,KAAK,QAAQ,IAAgBC,UAAUD,KAAK,QAAQ;IAC7F,MAAME,mBAAmBH,eAAeI,yBAAyBJ,gBAAgB,CAACK,IAAeA;IACjG,MAAMC,sBAA8C;QAClD,CAACC,kBAAkB,EAAEC,KAAK,IAAI,CAAC,GAAG,CAAC;QACnC,CAAC7B,aAAa,EAAE6B,KAAK,IAAI,CAAC,GAAG,CAAC;QAC9B,CAAC5B,eAAe,EAAE4B,KAAK,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC3B,gBAAgB,EAAE2B,KAAK,IAAI,CAAC,GAAG,CAAC;QACjC,CAAC1B,eAAe,EAAE0B,KAAK,IAAI,CAAC,KAAK,CAAC;QAClC,CAACzB,aAAa,EAAEyB,KAAK,IAAI,CAAC,GAAG,CAAC;IAChC;IACA,MAAM,EAAEC,UAAU,EAAE,GAAGf,kBAAkB,CAAC,EAAE;IAK5CN,OAAO,OAAO,GAAG;QACf,SAASU;QACT,OAAOY,gBAAgBb;QACvB,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASc,kBAAkBlB,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYC,UAAsBE;YACrF,eAAe,CAACiB,MAAwCC;gBACtD,MAAMC,QAASD,MAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;gBAE5C,IAAI,CAACX,UAAUY,OAAO,CAAC9B,mBAAmB,GAAG;oBAC3C,MAAM+B,eAAsCH,AAAAA,CAAAA,QAAQ,EAAC,EAAG,MAAM,CAC5D,CAACX,OAAc,CAACvB,mBAAmB,QAAQ,CAACuB,KAAK,GAAG;oBAEtD,MAAMe,mBAAmBjB,KAAK,IAAI,CAAC,CAACE,OAASA,KAAK,EAAE,KAAKM;oBACzD,MAAMU,YAAYD,mBAAmBZ,yBAAyBY,oBAAoBb;oBAElFY,aAAa,IAAI,CAAC;wBAChB,GAAIA,YAAY,CAAC,EAAE;wBACnB,KAAKC,kBAAkB,SAASV,mBAAmB,CAACC,kBAAkB;wBACtE,OAAOU,UAAUH,OAAO,CAAC9B,mBAAmB;oBAC9C;oBAEA,OAAO+B;gBACT;gBAEA,OAAQH,AAAAA,CAAAA,QAAQ,EAAC,EAAG,GAAG,CAAC,CAACM;oBACvB,IAAIxC,mBAAmB,QAAQ,CAAEwC,MAAc,GAAG,GAAa;wBAC7D,MAAMC,MAAMpB,KAAK,IAAI,CAAC,CAACE,OAASA,KAAK,EAAE,KAAMiB,MAAc,GAAG;wBAC9D,MAAMD,YAAYE,MAAMf,yBAAyBe,OAAOhB;wBAExD,OAAO;4BACL,GAAIe,KAAK;4BACT,OAAOD,UAAUH,OAAO,CAAEI,MAAc,GAAG,CAAC;4BAC5C,KAAKC,KAAK,SAASb,mBAAmB,CAACY,OAAO,IAAc,IAAKA,MAAc,GAAG;wBACpF;oBACF;oBAEA,OAAOA;gBACT;YACF;QACF;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASE,uBAAuB5B,YAAYO,MAAMU,YAAYH,mBAAmB,CAACzB,gBAAgB,EAAEc;QACtG;QACA,eAAe0B;IACjB;IACA,OAAOjC;AACT;AAEA,MAAMuB,oBAAoB,CAACd,SAAmBL,YAAwBC,UAAoBE;IACxF,MAAM2B,OAAOC,KACX/B,WAAW,MAAM,CAAC,CAACS,OAASJ,QAAQ,QAAQ,CAACI,KAAK,EAAE,IACpDuB,SAAS,CAACvB,OAAoBA,KAAK,EAAE,GACrCuB,SAAS,CAACvB,OAAoBA,KAAK,KAAK;IAG1C,MAAMwB,aAAaH,KAAK,GAAG,CAAC,CAACrB,OAAqB;YAChD,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACa;gBACN,IAAI,CAACZ,UAAUY,OAAO,CAAC9B,mBAAmB,GAAG;oBAC3C,IAAIS,SAAS,KAAK,EAAE,SAASQ,KAAK,EAAE,GAClC,OAAOa,OAAO,CAACY,cAAc;oBAE/B,IAAIjC,SAAS,CAAC,EAAE,SAASQ,KAAK,EAAE,GAC9B,OAAOa,OAAO,CAACa,UAAU;gBAE7B;gBAEA,MAAMV,YAAYW,2BAA2B3B,MAAMN;gBACnD,OAAOsB,UAAUH,OAAO,CAACb,KAAK,EAAE,CAAC;YACnC;QACF;IAEA,MAAM4B,iBAAiBnD,mBAAmB,GAAG,CAAC,CAACoD,MACtC;YACL,SAAS;YACT,UAAU;YACV,WAAW;YACXA;YACA,OAAO,CAAChB;gBACN,IAAI,CAACA,OACH,OAAO;gBAET,OAAOA,KAAK,CAACgB,IAAI;YACnB;QACF;IAGF,OAAO;WAAIL;QAAYI;KAAe;AACxC;AAEA,MAAMT,yBAAyB,CAC7B5B,YACAuC,UACAtB,YACAuB,aACArC,QACAsC;IAEA,MAAM,EAAEC,aAAa,EAAE,GAAGzB;IAE1B,OAAO;QACL;YACE,SAAS;YACT,WAAW;YACX,UAAU;YACV,KAAKjB,WAAW,IAAI,CAAC,CAAC2C,IAAMA,AAAe,YAAfA,EAAE,QAAQ,IAClC,CAAC9B;gBACC,MAAMS,QAAQT;gBACd,MAAMyB,MAAOhB,SAAUA,KAAK,CAACoB,cAAc,IAAgB;gBAC3D,MAAME,WAAW,GAAG3B,WAAW,UAAU,CAACqB,IAAI,CAAC,KAAK,IAAIA,IAAI,CAAC,EAAEE,YAAY,CAAC,CAAC;gBAE7E,IAAIC,sBAAsB;oBACxB,MAAMI,KAAKvB,KAAK,CAACwB,UAAU;oBAC3B,MAAMC,UAAUC,gBAAgBT,UAAUM;oBAE1C,OAAOE,UAAU,GAAGH,SAAS,CAAC,EAAEG,QAAQ,KAAK,IAAIF,IAAI,GAAGD;gBAC1D;gBAEA,OAAOA;YACT,IACA,CAAC/B;gBACC,MAAMS,QAAQT;gBACd,OAAO,GAAGS,KAAK,CAAC2B,YAAY,IAAI3B,KAAK,CAACwB,UAAU,CAAC,CAAC,EAAEN,YAAY,CAAC,CAAC;YACpE;YACJ,OAAO,CAAC3B;gBACN,MAAMS,QAAQT;gBACd,IAAI,CAACS,OACH,OAAO;gBAET,MAAM4B,QAAQ5B,KAAK,CAACjC,gBAAoC;gBACxD,MAAMwD,KAAKvB,KAAK,CAACwB,UAAU;gBAC3B,MAAMC,UAAUC,gBAAgBT,UAAUM;gBAC1C,MAAMpB,YAAYb,yBAAyBmC;gBAC3C,OAAOtB,UAAUyB;YACnB;QACF;KACD;AACH"}
|
|
@@ -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":"
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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)=>
|
|
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
|
-
|
|
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 {
|
|
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":";;;AAaO,MAAMA,iBAAiC,CAACC,MAAMC;IAEnD,MAAMC,SAASC,8BAAgBH,MAAMC;IACrC,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGJ;IACjC,MAAM,EAAEK,kBAAkB,EAAEC,aAAa,EAAE,EAAEC,QAAQ,EAAE,GAAGJ;IAC1D,MAAM,EAAEK,QAAQ,EAAEC,UAAU,EAAE,GAAGJ,kBAAkB,CAAC,EAAE;IAEtD,IAAIJ,OAAO,OAAO,EAAE;QAClB,IAAI,CAACA,OAAO,OAAO,CAAC,IAAI,EACtBA,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC;QAEzB,MAAMS,gBAAiBH,AAAAA,CAAAA,SAAS,SAAS,IAAI,EAAC,EAAG,GAAG,CAAC,CAACI;YACpD,MAAMC,MAAMN,WAAW,IAAI,CAAC,CAACO,OAASA,KAAK,EAAE,KAAKF;YAClD,OAAOG,2BAA2BF,KAAKT,cAAc,MAAM;QAC7D;QAEAF,OAAO,OAAO,CAAC,IAAI,GAAG;YACpB,OAAO;gBACL,SAAS;gBACT,OAAO,CAACc,MACCA,KAAK,OACR,IAAI,CAACC,MAAWC;wBAChB,IAAIP,aAAa,CAACO,MAAM,EACtB,OAAOP,aAAa,CAACO,MAAM,CAACD,KAAK,IAAI;wBAEvC,OAAOA,KAAK,IAAI;oBAClB,GACC,KAAK;YAEZ;YACA,SAASE,kBACPX,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAF,MAAM,QAAQ,EACdI,UACAC,YACAN,cAAc,MAAM;QAExB;IACF;IAEA,OAAOF;AACT;AAEA,MAAMiB,oBAAoB,CACxBC,SACAb,aAAmC,EAAE,EACrCc,WAA+B,EAAE,EACjCZ,UACAC,YACAY;IAEA,MAAMC,OAAOC,KACXjB,WAAW,MAAM,CAAC,CAACO,OAASM,QAAQ,QAAQ,CAACN,KAAK,EAAE,IACpDW,SAAS,CAACX,OAA6BA,KAAK,EAAE,GAC9CW,SAAS,CAACX,OAA6BA,KAAK,KAAK,GACjDW,SAAS,CAACX,OAA6BA,KAAK,KAAK;IAEnD,MAAMY,OAAOF,KACXH,SAAS,MAAM,CAAC,CAACP,OAASM,QAAQ,QAAQ,CAACN,KAAK,EAAE,IAClDW,SAAS,CAACX,OAA2BA,KAAK,EAAE,GAC5CW,SAAS,CAACX,OAA2BA,KAAK,KAAK;IAGjD,MAAMa,aAAaJ,KAAK,GAAG,CAAC,CAACT,OAA8B;YACzD,SAAS,CAACc;gBACR,MAAM,EAAEC,KAAK,EAAE,GAAGD;gBAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;gBAC7B,OAAO,CAAC,CAACC,KAAK,CAAChB,KAAK,EAAE,CAAC;YACzB;YACA,UAAU;YACV,WAAW;YACX,KAAK,CAACc;gBACJ,MAAM,EAAEC,KAAK,EAAE,GAAGD;gBAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;gBAC7B,IAAIf,KAAK,KAAK,IAAIA,KAAK,EAAE,EACvB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAE9B,OAAOgB,SAAUA,KAAK,CAAChB,KAAK,EAAE,CAAC;YACjC;YACA,OAAO,CAACc;gBACN,MAAM,EAAEC,KAAK,EAAE,GAAGD;gBAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;gBAC7B,MAAME,YAAYhB,2BAA2BD,MAAMQ;gBACnD,OAAOQ,QAAQC,UAAUD,KAAK,CAAChB,KAAK,EAAE,CAAC,IAAuB;YAChE;QACF;IAEA,MAAMkB,iBAAiB;QACrB,SAAS;QACT,UAAU;QACV,WAAW;QACX,KAAK,CAACJ;YACJ,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;YAE7B,MAAM,EAAEI,WAAW,EAAE,GAAGxB;YACxB,MAAM,EAAE,eAAeyB,SAAS,EAAE,GAAGxB;YAErC,OAAQoB,SAAUA,KAAK,CAACG,eAAeC,UAAU,IAAgB;QACnE;QACA,OAAO,CAACN;YACN,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;YAE7B,MAAM,EAAEM,SAAS,EAAEC,YAAY,EAAE,GAAG3B;YAEpC,IAAI,CAACqB,OACH,OAAO;YAET,MAAMO,QAAQP,KAAK,CAACM,aAAa;YACjC,MAAMxB,KAAKkB,KAAK,CAACK,UAAU;YAC3B,MAAMG,UAAUC,gBAAgBlB,UAAUT;YAC1C,IAAI,CAAC0B,SACH,OAAOE,OAAOH;YAGhB,MAAMN,YAAYU,yBAAyBH;YAC3C,OAAOP,UAAUM;QACnB;IACF;IAEA,MAAMK,aAAahB,KAAK,GAAG,CAAC,CAACZ,OAA4B;YACvD,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACc;gBACN,MAAM,EAAEC,KAAK,EAAE,GAAGD;gBAClB,MAAME,QAAQF,GAAG,KAAK,CAACC,MAAM;gBAE7B,IAAI,CAACC,OACH,OAAO;gBAET,MAAMlB,KAAKE,KAAK,EAAE;gBAClB,IAAI,CAACgB,OACH,OAAO;gBAET,MAAMO,QAAQP,KAAK,CAAClB,GAAG;gBACvB,MAAM0B,UAAUC,gBAAgBlB,UAAUT;gBAC1C,MAAMmB,YAAYU,yBAAyBH;gBAC3C,OAAOP,UAAUM;YACnB;QACF;IAEA,OAAO;WAAIV;QAAYK;WAAmBU;KAAW;AACvD"}
|
|
@@ -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;
|
|
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 };
|