@visactor/vseed 0.2.2 → 0.2.5
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 +1 -3
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/builder/builder/buildAdvanced.js +1 -2
- package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
- package/dist/esm/builder/builder/buildSpec.js +1 -2
- package/dist/esm/builder/builder/buildSpec.js.map +1 -1
- package/dist/esm/builder/builder/builder.d.ts +628 -334
- package/dist/esm/dataReshape/constant.d.ts +1 -0
- package/dist/esm/dataReshape/constant.js +2 -1
- package/dist/esm/dataReshape/constant.js.map +1 -1
- package/dist/esm/i18n/i18n.js +1 -4
- package/dist/esm/i18n/i18n.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +12 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +3 -3
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +4 -12
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +4 -12
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.d.ts +3 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js +65 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +24 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js +50 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/index.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/index.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.d.ts +14 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js +78 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -72
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +14 -68
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +17 -73
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +14 -68
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +13 -59
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +16 -57
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js +11 -13
- package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +10 -8
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js +0 -12
- package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js +13 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js +58 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
- package/dist/esm/pipeline/utils/boxplot.d.ts +1 -0
- package/dist/esm/pipeline/utils/boxplot.js +8 -0
- package/dist/esm/pipeline/utils/boxplot.js.map +1 -0
- package/dist/esm/pipeline/utils/index.d.ts +1 -0
- package/dist/esm/pipeline/utils/index.js +1 -0
- package/dist/esm/theme/common/legend.d.ts +3 -1
- package/dist/esm/theme/common/legend.js +13 -1
- package/dist/esm/theme/common/legend.js.map +1 -1
- package/dist/esm/theme/common/tooltip.js +1 -1
- package/dist/esm/theme/common/tooltip.js.map +1 -1
- package/dist/esm/theme/dark/dark.js +4 -1
- package/dist/esm/theme/dark/dark.js.map +1 -1
- package/dist/esm/theme/light/light.js +4 -1
- package/dist/esm/theme/light/light.js.map +1 -1
- package/dist/esm/types/advancedVSeed.d.ts +252 -420
- package/dist/esm/types/chartType/area/zArea.d.ts +5 -281
- package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +5 -281
- package/dist/esm/types/chartType/bar/zBar.d.ts +5 -281
- package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +5 -281
- package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +5 -281
- package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +5 -281
- package/dist/esm/types/chartType/column/zColumn.d.ts +5 -281
- package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +5 -281
- package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +5 -281
- package/dist/esm/types/chartType/donut/zDonut.d.ts +1 -1
- package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +5 -281
- package/dist/esm/types/chartType/funnel/zFunnel.d.ts +5 -0
- package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +5 -0
- package/dist/esm/types/chartType/histogram/zHistogram.d.ts +5 -281
- package/dist/esm/types/chartType/line/zLine.d.ts +5 -281
- package/dist/esm/types/chartType/pie/zPie.d.ts +1 -1
- package/dist/esm/types/chartType/radar/zRadar.d.ts +1 -1
- package/dist/esm/types/chartType/rose/zRose.d.ts +1 -1
- package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +1 -1
- package/dist/esm/types/chartType/scatter/zScatter.d.ts +5 -281
- package/dist/esm/types/dataSelector/selector.d.ts +108 -0
- package/dist/esm/types/dataSelector/selector.js +58 -51
- package/dist/esm/types/dataSelector/selector.js.map +1 -1
- package/dist/esm/types/properties/annotation/annotation.d.ts +4 -280
- package/dist/esm/types/properties/annotation/annotationArea.d.ts +2 -2
- package/dist/esm/types/properties/annotation/annotationHorizontalLine.d.ts +1 -6
- package/dist/esm/types/properties/annotation/annotationVerticalLine.d.ts +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationArea.d.ts +2 -2
- package/dist/esm/types/properties/annotation/zAnnotationArea.js +3 -3
- package/dist/esm/types/properties/annotation/zAnnotationArea.js.map +1 -1
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.d.ts +0 -69
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.d.ts +0 -69
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
- package/dist/esm/types/properties/config/area.d.ts +2 -2
- package/dist/esm/types/properties/config/bar.d.ts +3 -3
- package/dist/esm/types/properties/config/boxplot.d.ts +1 -1
- package/dist/esm/types/properties/config/column.d.ts +3 -3
- package/dist/esm/types/properties/config/config.d.ts +102 -48
- package/dist/esm/types/properties/config/crosshair/crosshair.d.ts +36 -0
- package/dist/esm/types/properties/config/dualAxis.d.ts +1 -1
- package/dist/esm/types/properties/config/funnel.d.ts +1 -1
- package/dist/esm/types/properties/config/heatmap.d.ts +83 -29
- package/dist/esm/types/properties/config/heatmap.js +6 -3
- package/dist/esm/types/properties/config/heatmap.js.map +1 -1
- package/dist/esm/types/properties/config/histogram.d.ts +1 -1
- package/dist/esm/types/properties/config/legend/legend.d.ts +10 -2
- package/dist/esm/types/properties/config/legend/legend.js +7 -2
- package/dist/esm/types/properties/config/legend/legend.js.map +1 -1
- package/dist/esm/types/properties/config/line.d.ts +1 -1
- package/dist/esm/types/properties/config/pie.d.ts +3 -3
- package/dist/esm/types/properties/config/rose.d.ts +2 -2
- package/dist/esm/types/properties/config/scatter.d.ts +1 -1
- package/dist/esm/types/properties/theme/customTheme.d.ts +204 -96
- package/dist/esm/types/zVseed.d.ts +829 -4407
- package/dist/umd/index.js +510 -505
- package/dist/umd/index.js.map +1 -1
- package/package.json +20 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.ts"],"sourcesContent":["import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { DimensionLinkage, PivotChartSpecPipe } from 'src/types'\n\nexport const dimensionLinkage: PivotChartSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = (advancedVSeed.config?.[chartType as 'line']?.dimensionLinkage ?? {}) as DimensionLinkage\n\n if (config.enable === false) {\n return spec\n }\n\n const indicators = spec.indicators\n const labelHoverOnAxis = {}\n const chartSpec = (indicators as any)?.[0]?.chartSpec as ILineChartSpec\n const crosshair = chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n const labelFormat = crosshair.xField.label?.formatMethod\n ;(labelHoverOnAxis as any).bottom = {\n visible: config.showLabel ?? crosshair.xField.label?.visible ?? true,\n background: crosshair.xField.label?.labelBackground,\n textStyle: crosshair.xField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n if (crosshair?.yField) {\n const labelFormat = crosshair.yField.label?.formatMethod\n ;(labelHoverOnAxis as any).left = {\n visible: config.showLabel ?? crosshair.yField.label?.visible ?? true,\n background: crosshair.yField.label?.labelBackground,\n textStyle: crosshair.yField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n\n if (indicators && indicators.length) {\n indicators.forEach((ind) => {\n const crosshair = (ind as any)?.chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n crosshair.xField.label = { visible: false }\n }\n\n if (crosshair?.yField) {\n crosshair.yField.label = { visible: false }\n }\n })\n }\n\n spec.chartDimensionLinkage = {\n showTooltip: config.showTooltip ?? (chartSpec?.tooltip?.dimension?.visible as boolean) ?? true,\n
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.ts"],"sourcesContent":["import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { DimensionLinkage, PivotChartSpecPipe } from 'src/types'\n\nexport const dimensionLinkage: PivotChartSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = (advancedVSeed.config?.[chartType as 'line']?.dimensionLinkage ?? {}) as DimensionLinkage\n\n if (config.enable === false) {\n return spec\n }\n\n const indicators = spec.indicators\n const labelHoverOnAxis = {}\n const chartSpec = (indicators as any)?.[0]?.chartSpec as ILineChartSpec\n const crosshair = chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n const labelFormat = crosshair.xField.label?.formatMethod\n ;(labelHoverOnAxis as any).bottom = {\n visible: config.showLabel ?? crosshair.xField.label?.visible ?? true,\n background: crosshair.xField.label?.labelBackground,\n textStyle: crosshair.xField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n if (crosshair?.yField) {\n const labelFormat = crosshair.yField.label?.formatMethod\n ;(labelHoverOnAxis as any).left = {\n visible: config.showLabel ?? crosshair.yField.label?.visible ?? true,\n background: crosshair.yField.label?.labelBackground,\n textStyle: crosshair.yField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n\n if (indicators && indicators.length) {\n indicators.forEach((ind) => {\n const crosshair = (ind as any)?.chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n crosshair.xField.label = { visible: false }\n }\n\n if (crosshair?.yField) {\n crosshair.yField.label = { visible: false }\n }\n })\n }\n\n spec.chartDimensionLinkage = {\n showTooltip: config.showTooltip ?? (chartSpec?.tooltip?.dimension?.visible as boolean) ?? true,\n heightLimitToShowTooltipForEdgeRow: (spec.defaultRowHeight as number) / 2,\n widthLimitToShowTooltipForEdgeColumn: (spec.defaultColWidth as number) / 2,\n labelHoverOnAxis,\n }\n\n return spec\n}\n"],"names":["dimensionLinkage","spec","context","advancedVSeed","vseed","chartType","config","indicators","labelHoverOnAxis","chartSpec","crosshair","labelFormat","text","undefined","ind"],"mappings":"AAGO,MAAMA,mBAAuC,CAACC,MAAMC;IACzD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAM,EAAEG,SAAS,EAAE,GAAGD;IAEtB,MAAME,SAAUH,cAAc,MAAM,EAAE,CAACE,UAAoB,EAAE,oBAAoB,CAAC;IAElF,IAAIC,AAAkB,UAAlBA,OAAO,MAAM,EACf,OAAOL;IAGT,MAAMM,aAAaN,KAAK,UAAU;IAClC,MAAMO,mBAAmB,CAAC;IAC1B,MAAMC,YAAaF,YAAoB,CAAC,EAAE,EAAE;IAC5C,MAAMG,YAAYD,WAAW;IAE7B,IAAIC,WAAW,QAAQ;QACrB,MAAMC,cAAcD,UAAU,MAAM,CAAC,KAAK,EAAE;QAC1CF,iBAAyB,MAAM,GAAG;YAClC,SAASF,OAAO,SAAS,IAAII,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW;YAChE,YAAYA,UAAU,MAAM,CAAC,KAAK,EAAE;YACpC,WAAWA,UAAU,MAAM,CAAC,KAAK,EAAE;YACnC,cAAcC,cACV,CAACC,OAAsCA,QAAQA,AAAS,MAATA,OAAaD,YAAYC,QAAQ,OAChFC;QACN;IACF;IACA,IAAIH,WAAW,QAAQ;QACrB,MAAMC,cAAcD,UAAU,MAAM,CAAC,KAAK,EAAE;QAC1CF,iBAAyB,IAAI,GAAG;YAChC,SAASF,OAAO,SAAS,IAAII,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW;YAChE,YAAYA,UAAU,MAAM,CAAC,KAAK,EAAE;YACpC,WAAWA,UAAU,MAAM,CAAC,KAAK,EAAE;YACnC,cAAcC,cACV,CAACC,OAAsCA,QAAQA,AAAS,MAATA,OAAaD,YAAYC,QAAQ,OAChFC;QACN;IACF;IAEA,IAAIN,cAAcA,WAAW,MAAM,EACjCA,WAAW,OAAO,CAAC,CAACO;QAClB,MAAMJ,YAAaI,KAAa,WAAW;QAE3C,IAAIJ,WAAW,QACbA,UAAU,MAAM,CAAC,KAAK,GAAG;YAAE,SAAS;QAAM;QAG5C,IAAIA,WAAW,QACbA,UAAU,MAAM,CAAC,KAAK,GAAG;YAAE,SAAS;QAAM;IAE9C;IAGFT,KAAK,qBAAqB,GAAG;QAC3B,aAAaK,OAAO,WAAW,IAAKG,WAAW,SAAS,WAAW,WAAuB;QAC1F,oCAAqCR,KAAK,gBAAgB,GAAc;QACxE,sCAAuCA,KAAK,eAAe,GAAc;QACzEO;IACF;IAEA,OAAOP;AACT"}
|
|
@@ -2,6 +2,7 @@ import { pipe, uniqueBy } from "remeda";
|
|
|
2
2
|
import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
|
|
3
3
|
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const tooltip_tooltip = (spec, context)=>{
|
|
6
7
|
const result = {
|
|
7
8
|
...spec
|
|
@@ -28,7 +29,8 @@ const tooltip_tooltip = (spec, context)=>{
|
|
|
28
29
|
visible: true
|
|
29
30
|
},
|
|
30
31
|
content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo)
|
|
31
|
-
}
|
|
32
|
+
},
|
|
33
|
+
updateElement: updateTooltipElement
|
|
32
34
|
};
|
|
33
35
|
return result;
|
|
34
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Measures, VChartSpecPipe, TooltipConfig, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltip: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\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 return unfoldInfo.colorIdMap[key].alias ?? key\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) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const 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","baseConfig","enable","foldInfo","unfoldInfo","getTooltipStyle","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","foldMap","encodingColor","d","v","datum","key","value","id","measure","findMeasureById","formatter","createFormatterByMeasure","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName","String"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Measures, VChartSpecPipe, TooltipConfig, UnfoldInfo } from 'src/types'\nimport { 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 { measures, datasetReshapeInfo, chartType, dimensions, encoding } = 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo),\n },\n\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createDimensionContent = (\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const { measureId, measureValue, foldMap } = foldInfo\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 return unfoldInfo.colorIdMap[key].alias ?? key\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) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const 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","baseConfig","enable","foldInfo","unfoldInfo","getTooltipStyle","createMarkContent","findAllMeasures","createDimensionContent","updateTooltipElement","measureId","measureValue","foldMap","encodingColor","d","v","datum","key","value","id","measure","findMeasureById","formatter","createFormatterByMeasure","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName","String"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { createFormatterByMeasure, findAllMeasures } from "../../../../utils/ind
|
|
|
3
3
|
import { ColorEncoding, LowerWhisker, 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";
|
|
6
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
6
7
|
const boxPlotMeasureKeys = [
|
|
7
8
|
UpperWhisker,
|
|
8
9
|
Q3MeasureValue,
|
|
@@ -70,7 +71,8 @@ const tooltipBoxplot = (spec, context)=>{
|
|
|
70
71
|
},
|
|
71
72
|
dimension: {
|
|
72
73
|
visible: false
|
|
73
|
-
}
|
|
74
|
+
},
|
|
75
|
+
updateElement: updateTooltipElement
|
|
74
76
|
};
|
|
75
77
|
return result;
|
|
76
78
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures } from '../../../../utils'\nimport type { Dimension, Dimensions, Encoding, VChartSpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n LowerWhisker,\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'\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 } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const meas = findAllMeasures(vseed.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\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-return\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 visible: false,\n },\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"],"names":["boxPlotMeasureKeys","UpperWhisker","Q3MeasureValue","MedianMeasureId","Q1MeasureValue","LowerWhisker","VCHART_OUTLIER_KEY","tooltipBoxplot","spec","context","result","advancedVSeed","vseed","chartType","dimensions","encoding","baseConfig","tooltip","enable","meas","findAllMeasures","valueMeasure","item","isNullish","defaultFormatter","createFormatterByMeasure","v","measureAliasMapping","OutliersMeasureId","intl","getTooltipStyle","createMarkContent","prev","data","datum","tooltipItems","outerlierMeasure","formatter","entry","mea","dims","pipe","uniqueBy","dimContent","ColorEncoding","XEncoding","defaultContent","key"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures } from '../../../../utils'\nimport type { Dimension, Dimensions, Encoding, VChartSpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern, ITooltipLineActual, TooltipData } from '@visactor/vchart'\nimport {\n ColorEncoding,\n LowerWhisker,\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 } = 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 = findAllMeasures(vseed.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\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-return\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 visible: false,\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"],"names":["boxPlotMeasureKeys","UpperWhisker","Q3MeasureValue","MedianMeasureId","Q1MeasureValue","LowerWhisker","VCHART_OUTLIER_KEY","tooltipBoxplot","spec","context","result","advancedVSeed","vseed","chartType","dimensions","encoding","baseConfig","tooltip","enable","meas","findAllMeasures","valueMeasure","item","isNullish","defaultFormatter","createFormatterByMeasure","v","measureAliasMapping","OutliersMeasureId","intl","getTooltipStyle","createMarkContent","prev","data","datum","tooltipItems","outerlierMeasure","formatter","entry","mea","updateTooltipElement","dims","pipe","uniqueBy","dimContent","ColorEncoding","XEncoding","defaultContent","key"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { isNullish } from "remeda";
|
|
|
2
2
|
import { createDimensionContent, createMarkContent } from "./tooltip.js";
|
|
3
3
|
import { findAllMeasures } from "../../../../utils/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const tooltipPrimary = (spec, context)=>{
|
|
6
7
|
const result = {
|
|
7
8
|
...spec
|
|
@@ -74,7 +75,8 @@ const tooltipDualAxis = (spec, context)=>{
|
|
|
74
75
|
enable: true
|
|
75
76
|
} } = baseConfig;
|
|
76
77
|
result.tooltip = {
|
|
77
|
-
style: getTooltipStyle(tooltip)
|
|
78
|
+
style: getTooltipStyle(tooltip),
|
|
79
|
+
updateElement: updateTooltipElement
|
|
78
80
|
};
|
|
79
81
|
return result;
|
|
80
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport { getTooltipStyle } from './tooltipStyle'\n\nexport const tooltipPrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\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 findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\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 }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish","tooltipDualAxis","getTooltipStyle"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, VChartSpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipPrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\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 findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(dimensions, measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\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":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish","tooltipDualAxis","getTooltipStyle","updateTooltipElement"],"mappings":";;;;;AAOO,MAAMA,iBAAiC,CAACC,MAAMC;IACnD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAC1E,MAAMO,aAAaP,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEI,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeP,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMQ,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDJ,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBZ,MAAM,QAAQ,GAC9BS,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBT,YAAYH,UAAUQ,YAAY,CAAC,EAAE,EAAEC;QACzE;IACF;IACA,OAAOZ;AACT;AAEO,MAAMgB,mBAAmC,CAAClB,MAAMC;IACrD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAC1E,MAAMO,aAAaP,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEI,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIQ,UAAUb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOJ;IAGT,MAAMW,eAAeP,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMQ,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDJ,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBZ,MAAM,QAAQ,GAC9BS,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBT,YAAYH,UAAUQ,YAAY,CAAC,EAAE,EAAEC;QACzE;IACF;IACA,OAAOZ;AACT;AAEO,MAAMkB,kBAAkC,CAACpB,MAAMC;IACpD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEM,SAAS,EAAE,GAAGJ;IACtB,MAAMO,aAAaP,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEI,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IAEvCR,OAAO,OAAO,GAAG;QACf,OAAOmB,gBAAgBV;QACvB,eAAeW;IACjB;IACA,OAAOpB;AACT"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const setWholeIcon = (shapeContainer, color)=>{
|
|
2
|
+
shapeContainer.style.backgroundColor = color;
|
|
3
|
+
shapeContainer.style.borderColor = color;
|
|
4
|
+
shapeContainer.style.width = '4px';
|
|
5
|
+
shapeContainer.style.height = '100%';
|
|
6
|
+
shapeContainer.style.display = 'inline-block';
|
|
7
|
+
shapeContainer.style.borderRadius = '2px';
|
|
8
|
+
shapeContainer.style.marginRight = '6px';
|
|
9
|
+
const shapeElements = shapeContainer.children;
|
|
10
|
+
for(let i = 0; i < shapeElements.length; i++){
|
|
11
|
+
const shapeElement = shapeElements[i];
|
|
12
|
+
const svgElement = shapeElement.children[0];
|
|
13
|
+
if (svgElement) svgElement.style.visibility = 'hidden';
|
|
14
|
+
shapeElement.style.background = 'transparent';
|
|
15
|
+
shapeElement.style.borderColor = 'transparent';
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const updateTooltipElement = (tooltipElement, actualTooltip)=>{
|
|
19
|
+
if (!tooltipElement || !tooltipElement.querySelector || !actualTooltip) return;
|
|
20
|
+
const shapeContainer = tooltipElement.querySelector('.vchart-tooltip-shape-column');
|
|
21
|
+
if (!shapeContainer) return;
|
|
22
|
+
if ('mark' === actualTooltip.activeType) {
|
|
23
|
+
const color = actualTooltip.content[0].shapeFill ?? 'transparent';
|
|
24
|
+
setWholeIcon(shapeContainer, color);
|
|
25
|
+
} else if ('dimension' === actualTooltip.activeType) {
|
|
26
|
+
shapeContainer.style.background = 'transparent';
|
|
27
|
+
shapeContainer.style.borderColor = 'transparent';
|
|
28
|
+
shapeContainer.style.width = 'auto';
|
|
29
|
+
shapeContainer.style.height = 'auto';
|
|
30
|
+
shapeContainer.style.display = 'inline-block';
|
|
31
|
+
shapeContainer.style.marginRight = '2px';
|
|
32
|
+
const shapeElements = shapeContainer.children;
|
|
33
|
+
for(let i = 0; i < shapeElements.length; i++){
|
|
34
|
+
const shapeElement = shapeElements[i];
|
|
35
|
+
const svgElement = shapeElement.children[0];
|
|
36
|
+
if (svgElement) svgElement.style.visibility = 'hidden';
|
|
37
|
+
const color = actualTooltip.content[i]?.shapeFill ?? 'transparent';
|
|
38
|
+
shapeElement.style.width = '4px';
|
|
39
|
+
shapeElement.style.height = '100%';
|
|
40
|
+
shapeElement.style.borderRadius = '2px';
|
|
41
|
+
shapeElement.style.marginRight = '4px';
|
|
42
|
+
shapeElement.style.backgroundColor = color;
|
|
43
|
+
shapeElement.style.borderColor = color;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const title = tooltipElement.querySelector('.vchart-tooltip-title');
|
|
47
|
+
if (title) title.style.marginBottom = '8px';
|
|
48
|
+
};
|
|
49
|
+
const updateMarkTooltipElement = (tooltipElement, actualTooltip)=>{
|
|
50
|
+
if (!tooltipElement || !tooltipElement.querySelector || !actualTooltip) return;
|
|
51
|
+
const shapeContainer = tooltipElement.querySelector('.vchart-tooltip-shape-column');
|
|
52
|
+
if (!shapeContainer) return;
|
|
53
|
+
const color = actualTooltip.content[0].shapeFill ?? 'transparent';
|
|
54
|
+
setWholeIcon(shapeContainer, color);
|
|
55
|
+
};
|
|
56
|
+
export { updateMarkTooltipElement, updateTooltipElement };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=tooltipElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipElement.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipElement.ts"],"sourcesContent":["const setWholeIcon = (shapeContainer: any, color: string) => {\n shapeContainer.style.backgroundColor = color\n shapeContainer.style.borderColor = color\n shapeContainer.style.width = '4px'\n shapeContainer.style.height = '100%'\n shapeContainer.style.display = 'inline-block'\n shapeContainer.style.borderRadius = '2px'\n shapeContainer.style.marginRight = '6px'\n\n const shapeElements = shapeContainer.children\n\n for (let i = 0; i < shapeElements.length; i++) {\n const shapeElement = shapeElements[i]\n const svgElement = shapeElement.children[0]\n\n if (svgElement) {\n svgElement.style.visibility = 'hidden'\n }\n\n shapeElement.style.background = 'transparent'\n shapeElement.style.borderColor = 'transparent'\n }\n}\n\nexport const updateTooltipElement = (tooltipElement: any, actualTooltip: any) => {\n if (!tooltipElement || !tooltipElement.querySelector || !actualTooltip) {\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const shapeContainer = tooltipElement.querySelector('.vchart-tooltip-shape-column')\n\n if (!shapeContainer) {\n return\n }\n\n if (actualTooltip.activeType === 'mark') {\n const color = (actualTooltip.content[0].shapeFill as string) ?? 'transparent'\n\n setWholeIcon(shapeContainer, color)\n } else if (actualTooltip.activeType === 'dimension') {\n shapeContainer.style.background = 'transparent'\n shapeContainer.style.borderColor = 'transparent'\n shapeContainer.style.width = 'auto'\n shapeContainer.style.height = 'auto'\n shapeContainer.style.display = 'inline-block'\n shapeContainer.style.marginRight = '2px'\n\n const shapeElements = shapeContainer.children\n\n for (let i = 0; i < shapeElements.length; i++) {\n const shapeElement = shapeElements[i]\n const svgElement = shapeElement.children[0]\n if (svgElement) {\n svgElement.style.visibility = 'hidden'\n }\n const color = actualTooltip.content[i]?.shapeFill ?? 'transparent'\n\n shapeElement.style.width = '4px'\n shapeElement.style.height = '100%'\n shapeElement.style.borderRadius = '2px'\n shapeElement.style.marginRight = '4px'\n shapeElement.style.backgroundColor = color\n shapeElement.style.borderColor = color\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const title = tooltipElement.querySelector('.vchart-tooltip-title')\n\n if (title) {\n title.style.marginBottom = '8px'\n }\n}\n\nexport const updateMarkTooltipElement = (tooltipElement: any, actualTooltip: any) => {\n if (!tooltipElement || !tooltipElement.querySelector || !actualTooltip) {\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const shapeContainer = tooltipElement.querySelector('.vchart-tooltip-shape-column')\n\n if (!shapeContainer) {\n return\n }\n\n const color = (actualTooltip.content[0].shapeFill as string) ?? 'transparent'\n\n setWholeIcon(shapeContainer, color)\n}\n"],"names":["setWholeIcon","shapeContainer","color","shapeElements","i","shapeElement","svgElement","updateTooltipElement","tooltipElement","actualTooltip","title","updateMarkTooltipElement"],"mappings":"AAAA,MAAMA,eAAe,CAACC,gBAAqBC;IACzCD,eAAe,KAAK,CAAC,eAAe,GAAGC;IACvCD,eAAe,KAAK,CAAC,WAAW,GAAGC;IACnCD,eAAe,KAAK,CAAC,KAAK,GAAG;IAC7BA,eAAe,KAAK,CAAC,MAAM,GAAG;IAC9BA,eAAe,KAAK,CAAC,OAAO,GAAG;IAC/BA,eAAe,KAAK,CAAC,YAAY,GAAG;IACpCA,eAAe,KAAK,CAAC,WAAW,GAAG;IAEnC,MAAME,gBAAgBF,eAAe,QAAQ;IAE7C,IAAK,IAAIG,IAAI,GAAGA,IAAID,cAAc,MAAM,EAAEC,IAAK;QAC7C,MAAMC,eAAeF,aAAa,CAACC,EAAE;QACrC,MAAME,aAAaD,aAAa,QAAQ,CAAC,EAAE;QAE3C,IAAIC,YACFA,WAAW,KAAK,CAAC,UAAU,GAAG;QAGhCD,aAAa,KAAK,CAAC,UAAU,GAAG;QAChCA,aAAa,KAAK,CAAC,WAAW,GAAG;IACnC;AACF;AAEO,MAAME,uBAAuB,CAACC,gBAAqBC;IACxD,IAAI,CAACD,kBAAkB,CAACA,eAAe,aAAa,IAAI,CAACC,eACvD;IAGF,MAAMR,iBAAiBO,eAAe,aAAa,CAAC;IAEpD,IAAI,CAACP,gBACH;IAGF,IAAIQ,AAA6B,WAA7BA,cAAc,UAAU,EAAa;QACvC,MAAMP,QAASO,cAAc,OAAO,CAAC,EAAE,CAAC,SAAS,IAAe;QAEhET,aAAaC,gBAAgBC;IAC/B,OAAO,IAAIO,AAA6B,gBAA7BA,cAAc,UAAU,EAAkB;QACnDR,eAAe,KAAK,CAAC,UAAU,GAAG;QAClCA,eAAe,KAAK,CAAC,WAAW,GAAG;QACnCA,eAAe,KAAK,CAAC,KAAK,GAAG;QAC7BA,eAAe,KAAK,CAAC,MAAM,GAAG;QAC9BA,eAAe,KAAK,CAAC,OAAO,GAAG;QAC/BA,eAAe,KAAK,CAAC,WAAW,GAAG;QAEnC,MAAME,gBAAgBF,eAAe,QAAQ;QAE7C,IAAK,IAAIG,IAAI,GAAGA,IAAID,cAAc,MAAM,EAAEC,IAAK;YAC7C,MAAMC,eAAeF,aAAa,CAACC,EAAE;YACrC,MAAME,aAAaD,aAAa,QAAQ,CAAC,EAAE;YAC3C,IAAIC,YACFA,WAAW,KAAK,CAAC,UAAU,GAAG;YAEhC,MAAMJ,QAAQO,cAAc,OAAO,CAACL,EAAE,EAAE,aAAa;YAErDC,aAAa,KAAK,CAAC,KAAK,GAAG;YAC3BA,aAAa,KAAK,CAAC,MAAM,GAAG;YAC5BA,aAAa,KAAK,CAAC,YAAY,GAAG;YAClCA,aAAa,KAAK,CAAC,WAAW,GAAG;YACjCA,aAAa,KAAK,CAAC,eAAe,GAAGH;YACrCG,aAAa,KAAK,CAAC,WAAW,GAAGH;QACnC;IACF;IAGA,MAAMQ,QAAQF,eAAe,aAAa,CAAC;IAE3C,IAAIE,OACFA,MAAM,KAAK,CAAC,YAAY,GAAG;AAE/B;AAEO,MAAMC,2BAA2B,CAACH,gBAAqBC;IAC5D,IAAI,CAACD,kBAAkB,CAACA,eAAe,aAAa,IAAI,CAACC,eACvD;IAGF,MAAMR,iBAAiBO,eAAe,aAAa,CAAC;IAEpD,IAAI,CAACP,gBACH;IAGF,MAAMC,QAASO,cAAc,OAAO,CAAC,EAAE,CAAC,SAAS,IAAe;IAEhET,aAAaC,gBAAgBC;AAC/B"}
|
|
@@ -2,6 +2,7 @@ import { uniqueBy } from "remeda";
|
|
|
2
2
|
import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
|
|
3
3
|
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const tooltipHeatmap = (spec, context)=>{
|
|
6
7
|
const result = {
|
|
7
8
|
...spec
|
|
@@ -25,7 +26,8 @@ const tooltipHeatmap = (spec, context)=>{
|
|
|
25
26
|
},
|
|
26
27
|
dimension: {
|
|
27
28
|
visible: false
|
|
28
|
-
}
|
|
29
|
+
},
|
|
30
|
+
updateElement: updateTooltipElement
|
|
29
31
|
};
|
|
30
32
|
return result;
|
|
31
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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'\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, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","getTooltipStyle","createMarkContent","findAllMeasures","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","getTooltipStyle","createMarkContent","findAllMeasures","updateTooltipElement","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { isNullish, pipe, uniqueBy } from "remeda";
|
|
|
2
2
|
import { BinEndMeasureId, BinStartMeasureId, ColorEncoding, FoldMeasureValue, XEncoding } from "../../../../../dataReshape/index.js";
|
|
3
3
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
4
4
|
import { getDefaultValueFormatterOfHistogram, getDefaultXFormatterOfHistogram } from "../../utils/histogram.js";
|
|
5
|
+
import { updateMarkTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE';
|
|
6
7
|
const tooltipHistogram = (spec, context)=>{
|
|
7
8
|
const result = {
|
|
@@ -30,7 +31,8 @@ const tooltipHistogram = (spec, context)=>{
|
|
|
30
31
|
visible: false
|
|
31
32
|
},
|
|
32
33
|
content: createMarkContent(encoding.tooltip || [], dimensions, encoding, defaultXFormatter, defaultValueFormatter)
|
|
33
|
-
}
|
|
34
|
+
},
|
|
35
|
+
updateElement: updateMarkTooltipElement
|
|
34
36
|
};
|
|
35
37
|
return result;
|
|
36
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport type { Dimension, Dimensions, Encoding, VChartSpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, ColorEncoding, FoldMeasureValue, XEncoding } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { getDefaultValueFormatterOfHistogram, getDefaultXFormatterOfHistogram } from '../../utils/histogram'\n\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipHistogram: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip; binValueType: 'count' | 'percentage' }\n const { binValueType, tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const defaultXFormatter = getDefaultXFormatterOfHistogram(advancedVSeed)\n const defaultValueFormatter = getDefaultValueFormatterOfHistogram(binValueType)\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n encoding as Encoding,\n defaultXFormatter,\n defaultValueFormatter,\n ),\n },\n dimension: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n encoding as Encoding,\n defaultXFormatter,\n defaultValueFormatter,\n ),\n },\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n encoding: Encoding,\n dimFormatter: (value: number) => string,\n defaultValueFormatter: (value: number | string) => string,\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\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 defaultValueFormatter(datum?.[item.id] as string)\n },\n }))\n\n const defaultContent = [\n {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return `[${dimFormatter(+datum[BinStartMeasureId])}, ${dimFormatter(+datum[BinEndMeasureId])})`\n },\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return defaultValueFormatter(datum[FoldMeasureValue] as string | number)\n },\n },\n ]\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n"],"names":["VCHART_OUTLIER_KEY","tooltipHistogram","spec","context","result","advancedVSeed","chartType","dimensions","encoding","baseConfig","binValueType","tooltip","enable","defaultXFormatter","getDefaultXFormatterOfHistogram","defaultValueFormatter","getDefaultValueFormatterOfHistogram","getTooltipStyle","createMarkContent","dimFormatter","dims","pipe","item","uniqueBy","dimContent","datum","isNullish","ColorEncoding","XEncoding","defaultContent","BinStartMeasureId","BinEndMeasureId","FoldMeasureValue"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.ts"],"sourcesContent":["import { pipe, uniqueBy, isNullish } from 'remeda'\nimport type { Dimension, Dimensions, Encoding, VChartSpecPipe, Tooltip } from 'src/types'\nimport type { Datum, ISpec, ITooltipLinePattern } from '@visactor/vchart'\nimport { BinEndMeasureId, BinStartMeasureId, ColorEncoding, FoldMeasureValue, XEncoding } from 'src/dataReshape'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { getDefaultValueFormatterOfHistogram, getDefaultXFormatterOfHistogram } from '../../utils/histogram'\nimport { updateMarkTooltipElement } from './tooltipElement'\n\nconst VCHART_OUTLIER_KEY = '__VCHART_BOX_PLOT_OUTLIER_VALUE'\n\nexport const tooltipHistogram: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip; binValueType: 'count' | 'percentage' }\n const { binValueType, tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const defaultXFormatter = getDefaultXFormatterOfHistogram(advancedVSeed)\n const defaultValueFormatter = getDefaultValueFormatterOfHistogram(binValueType)\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n encoding as Encoding,\n defaultXFormatter,\n defaultValueFormatter,\n ),\n },\n dimension: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n encoding as Encoding,\n defaultXFormatter,\n defaultValueFormatter,\n ),\n },\n\n updateElement: updateMarkTooltipElement,\n }\n return result as unknown as ISpec\n}\n\nconst createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n encoding: Encoding,\n dimFormatter: (value: number) => string,\n defaultValueFormatter: (value: number | string) => string,\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\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 defaultValueFormatter(datum?.[item.id] as string)\n },\n }))\n\n const defaultContent = [\n {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return `[${dimFormatter(+datum[BinStartMeasureId])}, ${dimFormatter(+datum[BinEndMeasureId])})`\n },\n value: (datum: Datum | undefined) => {\n if (!datum) {\n return ''\n }\n return defaultValueFormatter(datum[FoldMeasureValue] as string | number)\n },\n },\n ]\n\n return [...dimContent, defaultContent] as ITooltipLinePattern[]\n}\n"],"names":["VCHART_OUTLIER_KEY","tooltipHistogram","spec","context","result","advancedVSeed","chartType","dimensions","encoding","baseConfig","binValueType","tooltip","enable","defaultXFormatter","getDefaultXFormatterOfHistogram","defaultValueFormatter","getDefaultValueFormatterOfHistogram","getTooltipStyle","createMarkContent","updateMarkTooltipElement","dimFormatter","dims","pipe","item","uniqueBy","dimContent","datum","isNullish","ColorEncoding","XEncoding","defaultContent","BinStartMeasureId","BinEndMeasureId","FoldMeasureValue"],"mappings":";;;;;AAQA,MAAMA,qBAAqB;AAEpB,MAAMC,mBAAmC,CAACC,MAAMC;IACrD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IAC5C,MAAMI,aAAaJ,cAAc,MAAM,CAACC,UAAU;IAClD,MAAM,EAAEI,YAAY,EAAEC,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGF;IACrD,MAAM,EAAEG,MAAM,EAAE,GAAGD;IACnB,MAAME,oBAAoBC,gCAAgCT;IAC1D,MAAMU,wBAAwBC,oCAAoCN;IAElEN,OAAO,OAAO,GAAG;QACf,OAAOa,gBAAgBN;QACvB,SAASC;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASM,kBACPV,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAC,UACAK,mBACAE;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPV,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAC,UACAK,mBACAE;QAEJ;QAEA,eAAeI;IACjB;IACA,OAAOf;AACT;AAEA,MAAMc,oBAAoB,CACxBP,SACAJ,YACAC,UACAY,cACAL;IAEA,MAAMM,OAAOC,KACXf,WAAW,MAAM,CAAC,CAACgB,OAASZ,QAAQ,QAAQ,CAACY,KAAK,EAAE,IACpDC,SAAS,CAACD,OAAoBA,KAAK,EAAE,GACrCC,SAAS,CAACD,OAAoBA,KAAK,KAAK;IAG1C,MAAME,aAAaJ,KAAK,GAAG,CAAC,CAACE,OAAqB;YAChD,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACG;gBACN,IAAI,CAACC,UAAUD,OAAO,CAAC1B,mBAAmB,GAAG;oBAC3C,IAAIQ,SAAS,KAAK,EAAE,SAASe,KAAK,EAAE,GAClC,OAAOG,OAAO,CAACE,cAAc;oBAE/B,IAAIpB,SAAS,CAAC,EAAE,SAASe,KAAK,EAAE,GAC9B,OAAOG,OAAO,CAACG,UAAU;gBAE7B;gBAEA,OAAOd,sBAAsBW,OAAO,CAACH,KAAK,EAAE,CAAC;YAC/C;QACF;IAEA,MAAMO,iBAAiB;QACrB;YACE,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACJ;gBACJ,IAAI,CAACA,OACH,OAAO;gBAET,OAAO,CAAC,CAAC,EAAEN,aAAa,CAACM,KAAK,CAACK,kBAAkB,EAAE,EAAE,EAAEX,aAAa,CAACM,KAAK,CAACM,gBAAgB,EAAE,CAAC,CAAC;YACjG;YACA,OAAO,CAACN;gBACN,IAAI,CAACA,OACH,OAAO;gBAET,OAAOX,sBAAsBW,KAAK,CAACO,iBAAiB;YACtD;QACF;KACD;IAED,OAAO;WAAIR;QAAYK;KAAe;AACxC"}
|
|
@@ -2,6 +2,7 @@ import { uniqueBy } from "remeda";
|
|
|
2
2
|
import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
|
|
3
3
|
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const tooltipScatter = (spec, context)=>{
|
|
6
7
|
const result = {
|
|
7
8
|
...spec
|
|
@@ -25,7 +26,8 @@ const tooltipScatter = (spec, context)=>{
|
|
|
25
26
|
},
|
|
26
27
|
dimension: {
|
|
27
28
|
visible: false
|
|
28
|
-
}
|
|
29
|
+
},
|
|
30
|
+
updateElement: updateTooltipElement
|
|
29
31
|
};
|
|
30
32
|
return result;
|
|
31
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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'\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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: 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","findAllMeasures","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","foldInfo","Object","measureId","measureValue"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, 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(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\n },\n dimension: {\n visible: false,\n },\n updateElement: updateTooltipElement,\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: 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","findAllMeasures","updateTooltipElement","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","formatter","createFormatterByMeasure","foldMeaContent","foldInfo","Object","measureId","measureValue"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const revisedBoxPlotFieldKey: (fieldKey: string, groupId: string, isPivotChart?: boolean) => string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BoxPlotPivotIndicator } from "../../dataReshape/index.js";
|
|
2
|
+
const revisedBoxPlotFieldKey = (fieldKey, groupId, isPivotChart = true)=>{
|
|
3
|
+
if (!isPivotChart) return fieldKey;
|
|
4
|
+
return `${BoxPlotPivotIndicator}_${groupId}_${fieldKey}`;
|
|
5
|
+
};
|
|
6
|
+
export { revisedBoxPlotFieldKey };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=boxplot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/utils/boxplot.js","sources":["../../../../src/pipeline/utils/boxplot.ts"],"sourcesContent":["import { BoxPlotPivotIndicator } from 'src/dataReshape'\n\nexport const revisedBoxPlotFieldKey = (fieldKey: string, groupId: string, isPivotChart = true) => {\n if (!isPivotChart) {\n return fieldKey\n }\n return `${BoxPlotPivotIndicator}_${groupId}_${fieldKey}`\n}\n"],"names":["revisedBoxPlotFieldKey","fieldKey","groupId","isPivotChart","BoxPlotPivotIndicator"],"mappings":";AAEO,MAAMA,yBAAyB,CAACC,UAAkBC,SAAiBC,eAAe,IAAI;IAC3F,IAAI,CAACA,cACH,OAAOF;IAET,OAAO,GAAGG,sBAAsB,CAAC,EAAEF,QAAQ,CAAC,EAAED,UAAU;AAC1D"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { Legend } from '../../types';
|
|
1
|
+
import type { ColorLegend, Legend } from '../../types';
|
|
2
2
|
export declare const getDefaultLegend: () => Legend;
|
|
3
3
|
export declare const getDarkLegend: () => Legend;
|
|
4
4
|
export declare const getLightLegend: () => Legend;
|
|
5
|
+
export declare const getDarkColorLegend: () => ColorLegend;
|
|
6
|
+
export declare const getLightColorLegend: () => ColorLegend;
|
|
@@ -19,6 +19,18 @@ const getLightLegend = ()=>({
|
|
|
19
19
|
pagerIconColor: '#89909D',
|
|
20
20
|
pagerIconDisableColor: '#F1F2F5'
|
|
21
21
|
});
|
|
22
|
-
|
|
22
|
+
const getDarkColorLegend = ()=>({
|
|
23
|
+
...getDefaultLegend(),
|
|
24
|
+
labelColor: '#BBBDC3',
|
|
25
|
+
railBackgroundColor: '#404349',
|
|
26
|
+
handlerBorderColor: '#4B4F54'
|
|
27
|
+
});
|
|
28
|
+
const getLightColorLegend = ()=>({
|
|
29
|
+
...getDefaultLegend(),
|
|
30
|
+
labelColor: '#606773',
|
|
31
|
+
handlerBorderColor: '#fff',
|
|
32
|
+
railBackgroundColor: '#f1f3f4'
|
|
33
|
+
});
|
|
34
|
+
export { getDarkColorLegend, getDarkLegend, getDefaultLegend, getLightColorLegend, getLightLegend };
|
|
23
35
|
|
|
24
36
|
//# sourceMappingURL=legend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme/common/legend.js","sources":["../../../../src/theme/common/legend.ts"],"sourcesContent":["import type { Legend } from 'src/types'\n\nexport const getDefaultLegend = (): Legend => ({\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontSize: 12,\n labelFontWeight: 400,\n})\n\nexport const getDarkLegend = (): Legend => ({\n ...getDefaultLegend(),\n labelColor: '#BBBDC3',\n pagerIconColor: '#89909D',\n pagerIconDisableColor: '#2A2D33',\n})\n\nexport const getLightLegend = (): Legend => ({\n ...getDefaultLegend(),\n labelColor: '#606773',\n pagerIconColor: '#89909D',\n pagerIconDisableColor: '#F1F2F5',\n})\n"],"names":["getDefaultLegend","getDarkLegend","getLightLegend"],"mappings":"AAEO,MAAMA,mBAAmB,IAAe;QAC7C,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,eAAe;QACf,iBAAiB;IACnB;AAEO,MAAMC,gBAAgB,IAAe;QAC1C,GAAGD,kBAAkB;QACrB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;IACzB;AAEO,MAAME,iBAAiB,IAAe;QAC3C,GAAGF,kBAAkB;QACrB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;IACzB"}
|
|
1
|
+
{"version":3,"file":"theme/common/legend.js","sources":["../../../../src/theme/common/legend.ts"],"sourcesContent":["import type { ColorLegend, Legend } from 'src/types'\n\nexport const getDefaultLegend = (): Legend => ({\n enable: true,\n border: true,\n maxSize: 1,\n shapeType: 'rectRound',\n position: 'rt',\n labelFontSize: 12,\n labelFontWeight: 400,\n})\n\nexport const getDarkLegend = (): Legend => ({\n ...getDefaultLegend(),\n labelColor: '#BBBDC3',\n pagerIconColor: '#89909D',\n pagerIconDisableColor: '#2A2D33',\n})\n\nexport const getLightLegend = (): Legend => ({\n ...getDefaultLegend(),\n labelColor: '#606773',\n pagerIconColor: '#89909D',\n pagerIconDisableColor: '#F1F2F5',\n})\n\nexport const getDarkColorLegend = (): ColorLegend => ({\n ...getDefaultLegend(),\n labelColor: '#BBBDC3',\n railBackgroundColor: '#404349',\n handlerBorderColor: '#4B4F54',\n})\n\nexport const getLightColorLegend = (): ColorLegend => ({\n ...getDefaultLegend(),\n labelColor: '#606773',\n handlerBorderColor: '#fff',\n railBackgroundColor: '#f1f3f4',\n})\n"],"names":["getDefaultLegend","getDarkLegend","getLightLegend","getDarkColorLegend","getLightColorLegend"],"mappings":"AAEO,MAAMA,mBAAmB,IAAe;QAC7C,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,eAAe;QACf,iBAAiB;IACnB;AAEO,MAAMC,gBAAgB,IAAe;QAC1C,GAAGD,kBAAkB;QACrB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;IACzB;AAEO,MAAME,iBAAiB,IAAe;QAC3C,GAAGF,kBAAkB;QACrB,YAAY;QACZ,gBAAgB;QAChB,uBAAuB;IACzB;AAEO,MAAMG,qBAAqB,IAAoB;QACpD,GAAGH,kBAAkB;QACrB,YAAY;QACZ,qBAAqB;QACrB,oBAAoB;IACtB;AAEO,MAAMI,sBAAsB,IAAoB;QACrD,GAAGJ,kBAAkB;QACrB,YAAY;QACZ,oBAAoB;QACpB,qBAAqB;IACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme/common/tooltip.js","sources":["../../../../src/theme/common/tooltip.ts"],"sourcesContent":["import type { TooltipConfig } from 'src/types'\n\nconst getDefaultTooltip = (): TooltipConfig => ({\n enable: true,\n borderRadius: 12,\n borderWidth: 1,\n padding:
|
|
1
|
+
{"version":3,"file":"theme/common/tooltip.js","sources":["../../../../src/theme/common/tooltip.ts"],"sourcesContent":["import type { TooltipConfig } from 'src/types'\n\nconst getDefaultTooltip = (): TooltipConfig => ({\n enable: true,\n borderRadius: 12,\n borderWidth: 1,\n padding: 9,\n lineHeight: 12,\n fontSize: 12,\n lineSpace: 6,\n})\n\nexport const getLightTooltip = (): TooltipConfig => ({\n ...getDefaultTooltip(),\n borderColor: '#e3e5e8',\n backgroundColor: '#fff',\n keyColor: '#606773',\n valueColor: '#21252c',\n titleColor: '#21252c',\n})\n\nexport const getDarkTooltip = (): TooltipConfig => ({\n ...getDefaultTooltip(),\n borderColor: '#3c3f44',\n backgroundColor: '#2b2d30',\n keyColor: '#89909D',\n valueColor: '#E2E3E6',\n titleColor: '#E2E3E6',\n})\n"],"names":["getDefaultTooltip","getLightTooltip","getDarkTooltip"],"mappings":"AAEA,MAAMA,oBAAoB,IAAsB;QAC9C,QAAQ;QACR,cAAc;QACd,aAAa;QACb,SAAS;QACT,YAAY;QACZ,UAAU;QACV,WAAW;IACb;AAEO,MAAMC,kBAAkB,IAAsB;QACnD,GAAGD,mBAAmB;QACtB,aAAa;QACb,iBAAiB;QACjB,UAAU;QACV,YAAY;QACZ,YAAY;IACd;AAEO,MAAME,iBAAiB,IAAsB;QAClD,GAAGF,mBAAmB;QACtB,aAAa;QACb,iBAAiB;QACjB,UAAU;QACV,YAAY;QACZ,YAAY;IACd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDarkColor, getDarkCrosshairLine, getDarkCrosshairRect, getDarkLabel, getDarkLegend, getDarkPivotChartGridConfig, getDarkTableConfig } from "../common/index.js";
|
|
1
|
+
import { getDarkColor, getDarkColorLegend, getDarkCrosshairLine, getDarkCrosshairRect, getDarkLabel, getDarkLegend, getDarkPivotChartGridConfig, getDarkTableConfig } from "../common/index.js";
|
|
2
2
|
import { getDarkTooltip } from "../common/tooltip.js";
|
|
3
3
|
import { getDarkBandAxis, getDarkLinearAxis } from "../common/axes.js";
|
|
4
4
|
import { getDarkAnnotation } from "../common/annotaion.js";
|
|
@@ -242,6 +242,9 @@ const darkTheme = ()=>{
|
|
|
242
242
|
},
|
|
243
243
|
heatmap: {
|
|
244
244
|
...baseConfig,
|
|
245
|
+
legend: getDarkColorLegend(),
|
|
246
|
+
xAxis: bandAxis,
|
|
247
|
+
yAxis: bandAxis,
|
|
245
248
|
label: {
|
|
246
249
|
...baseConfig.label,
|
|
247
250
|
labelColorSmartInvert: true
|