@visactor/vseed 0.3.8 → 0.3.9
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 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +15 -10
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
- package/dist/umd/index.js +14 -9
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Dimensions, FoldInfo, Measures, VChartSpecPipe, UnfoldInfo } from '../../../../../types';
|
|
2
2
|
export declare const tooltip: VChartSpecPipe;
|
|
3
|
-
export declare const createDimensionContent: (
|
|
3
|
+
export declare const createDimensionContent: (tooltips: string[], colors: string[], measures: Measures | undefined, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo, hasMultiMeasureGroup: boolean) => {
|
|
4
4
|
visible: boolean;
|
|
5
5
|
shapeType: string;
|
|
6
6
|
hasShape: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { pipe, uniqueBy } from "remeda";
|
|
1
|
+
import { pipe, unique, uniqueBy } from "remeda";
|
|
2
2
|
import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
|
|
3
|
-
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
3
|
+
import { MeasureId, MeasureName, ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
5
|
import { updateTooltipElement } from "./tooltipElement.js";
|
|
6
6
|
const tooltip_tooltip = (spec, context)=>{
|
|
@@ -28,16 +28,17 @@ const tooltip_tooltip = (spec, context)=>{
|
|
|
28
28
|
title: {
|
|
29
29
|
visible: true
|
|
30
30
|
},
|
|
31
|
-
content: createDimensionContent(encoding.tooltip || [], measures, foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
31
|
+
content: createDimensionContent(encoding.tooltip || [], encoding.color || [], measures, foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
32
32
|
},
|
|
33
33
|
updateElement: updateTooltipElement
|
|
34
34
|
};
|
|
35
35
|
return result;
|
|
36
36
|
};
|
|
37
|
-
const createDimensionContent = (
|
|
37
|
+
const createDimensionContent = (tooltips, colors, measures = [], foldInfo, unfoldInfo, hasMultiMeasureGroup)=>{
|
|
38
38
|
const { measureId, measureValue, foldMap } = foldInfo;
|
|
39
39
|
const { encodingColor } = unfoldInfo;
|
|
40
|
-
const hasMeasureTooltip =
|
|
40
|
+
const hasMeasureTooltip = tooltips.some((d)=>measures.find((item)=>item.id === d));
|
|
41
|
+
const hasMeasureIdInColor = colors.some((d)=>measures.find((item)=>item.id === d || d === MeasureId || d === MeasureName));
|
|
41
42
|
return [
|
|
42
43
|
{
|
|
43
44
|
visible: true,
|
|
@@ -49,13 +50,17 @@ const createDimensionContent = (tooltip, measures = [], foldInfo, unfoldInfo, ha
|
|
|
49
50
|
return foldMap[key] ?? key;
|
|
50
51
|
} : (v)=>{
|
|
51
52
|
const datum = v;
|
|
52
|
-
const
|
|
53
|
-
const
|
|
53
|
+
const colorId = datum?.[encodingColor];
|
|
54
|
+
const colorAlias = unfoldInfo.colorIdMap?.[colorId]?.alias ?? colorId;
|
|
54
55
|
if (hasMultiMeasureGroup) {
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
if (hasMeasureIdInColor) return colorAlias;
|
|
57
|
+
const meaAlias = datum && datum[MeasureName] || '';
|
|
58
|
+
return unique([
|
|
59
|
+
colorAlias,
|
|
60
|
+
meaAlias
|
|
61
|
+
]).join('-');
|
|
57
62
|
}
|
|
58
|
-
return
|
|
63
|
+
return colorAlias;
|
|
59
64
|
},
|
|
60
65
|
value: (v)=>{
|
|
61
66
|
const datum = v;
|
|
@@ -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, 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 { 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 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 tooltip: 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 = tooltip.some((d) => measures.find((item) => item.id === d))\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 key = (datum && (datum[encodingColor] as string)) || ''\n\n const colorKey = `${unfoldInfo.colorIdMap[key].alias ?? key}`\n\n if (hasMultiMeasureGroup) {\n const mId = (datum && (datum[measureId] as string)) || ''\n\n return `${colorKey}-${foldMap[mId] ?? mId}`\n }\n\n return colorKey\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","hasMultiMeasureGroup","measureId","measureValue","foldMap","encodingColor","hasMeasureTooltip","d","item","v","datum","key","colorKey","mId","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 { 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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"}
|
|
@@ -25,7 +25,7 @@ const tooltipOfDualAxisSeries = (options)=>(spec, context)=>{
|
|
|
25
25
|
title: {
|
|
26
26
|
visible: true
|
|
27
27
|
},
|
|
28
|
-
content: createDimensionContent(encoding.tooltip || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
28
|
+
content: createDimensionContent(encoding.tooltip || [], encoding.color || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
return result;
|
|
@@ -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 measures,\n options.foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n }\n return result\n }\n}\n\nexport const tooltipDualAxis: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n updateElement: updateTooltipElement,\n }\n return result\n}\n"],"names":["tooltipOfDualAxisSeries","options","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","tooltip","enable","unfoldInfo","createMarkContent","createDimensionContent","tooltipDualAxis","getTooltipStyle","updateTooltipElement"],"mappings":";;;AAKO,MAAMA,0BAA0B,CAACC,UAC/B,CAACC,MAAMC;QACZ,MAAMC,SAAS;YAAE,GAAGF,IAAI;QAAC;QACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;QACjC,MAAM,EACJI,WAAW,EAAE,EACbC,kBAAkB,EAClBC,SAAS,EACTC,aAAa,EAAE,EACfC,QAAQ,EACRC,kBAAkB,EAAE,EACrB,GAAGP;QACJ,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;QAClD,MAAM,EAAEK,UAAU;YAAE,QAAQ;QAAK,CAAC,EAAE,GAAGD;QACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;QAEnB,MAAME,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;QAEnDJ,OAAO,OAAO,GAAG;YACf,SAASW;YACT,MAAM;gBACJ,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAJ,MAAM,QAAQ,EACdL,QAAQ,QAAQ,EAChBe;YAEJ;YACA,WAAW;gBACT,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,uBACPP,SAAS,OAAO,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { createDimensionContent, createMarkContent } from './tooltip'\nimport type { VChartSpecPipe, Tooltip, Measures, DualAxisOptions } from 'src/types'\nimport { getTooltipStyle } from './tooltipStyle'\nimport { updateTooltipElement } from './tooltipElement'\n\nexport const tooltipOfDualAxisSeries = (options: DualAxisOptions): VChartSpecPipe => {\n return (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const {\n measures = [],\n datasetReshapeInfo,\n chartType,\n dimensions = [],\n encoding,\n reshapeMeasures = [],\n } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n vseed.measures as Measures,\n options.foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(\n encoding.tooltip || [],\n encoding.color || [],\n measures,\n options.foldInfo,\n unfoldInfo,\n reshapeMeasures.length > 1,\n ),\n },\n }\n return result\n }\n}\n\nexport const tooltipDualAxis: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n\n result.tooltip = {\n style: getTooltipStyle(tooltip),\n updateElement: updateTooltipElement,\n }\n return result\n}\n"],"names":["tooltipOfDualAxisSeries","options","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","reshapeMeasures","baseConfig","tooltip","enable","unfoldInfo","createMarkContent","createDimensionContent","tooltipDualAxis","getTooltipStyle","updateTooltipElement"],"mappings":";;;AAKO,MAAMA,0BAA0B,CAACC,UAC/B,CAACC,MAAMC;QACZ,MAAMC,SAAS;YAAE,GAAGF,IAAI;QAAC;QACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;QACjC,MAAM,EACJI,WAAW,EAAE,EACbC,kBAAkB,EAClBC,SAAS,EACTC,aAAa,EAAE,EACfC,QAAQ,EACRC,kBAAkB,EAAE,EACrB,GAAGP;QACJ,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;QAClD,MAAM,EAAEK,UAAU;YAAE,QAAQ;QAAK,CAAC,EAAE,GAAGD;QACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;QAEnB,MAAME,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;QAEnDJ,OAAO,OAAO,GAAG;YACf,SAASW;YACT,MAAM;gBACJ,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAJ,MAAM,QAAQ,EACdL,QAAQ,QAAQ,EAChBe;YAEJ;YACA,WAAW;gBACT,OAAO;oBACL,SAAS;gBACX;gBACA,SAASE,uBACPP,SAAS,OAAO,IAAI,EAAE,EACtBA,SAAS,KAAK,IAAI,EAAE,EACpBJ,UACAN,QAAQ,QAAQ,EAChBe,YACAJ,gBAAgB,MAAM,GAAG;YAE7B;QACF;QACA,OAAOR;IACT;AAGK,MAAMe,kBAAkC,CAACjB,MAAMC;IACpD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEM,SAAS,EAAE,GAAGJ;IACtB,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IAEvCT,OAAO,OAAO,GAAG;QACf,OAAOgB,gBAAgBN;QACvB,eAAeO;IACjB;IACA,OAAOjB;AACT"}
|
package/dist/umd/index.js
CHANGED
|
@@ -3846,16 +3846,17 @@
|
|
|
3846
3846
|
title: {
|
|
3847
3847
|
visible: true
|
|
3848
3848
|
},
|
|
3849
|
-
content: createDimensionContent(encoding.tooltip || [], measures, foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
3849
|
+
content: createDimensionContent(encoding.tooltip || [], encoding.color || [], measures, foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
3850
3850
|
},
|
|
3851
3851
|
updateElement: updateTooltipElement
|
|
3852
3852
|
};
|
|
3853
3853
|
return result;
|
|
3854
3854
|
};
|
|
3855
|
-
const createDimensionContent = (
|
|
3855
|
+
const createDimensionContent = (tooltips, colors, measures = [], foldInfo, unfoldInfo, hasMultiMeasureGroup)=>{
|
|
3856
3856
|
const { measureId, measureValue, foldMap } = foldInfo;
|
|
3857
3857
|
const { encodingColor } = unfoldInfo;
|
|
3858
|
-
const hasMeasureTooltip =
|
|
3858
|
+
const hasMeasureTooltip = tooltips.some((d)=>measures.find((item)=>item.id === d));
|
|
3859
|
+
const hasMeasureIdInColor = colors.some((d)=>measures.find((item)=>item.id === d || d === MeasureId || d === MeasureName));
|
|
3859
3860
|
return [
|
|
3860
3861
|
{
|
|
3861
3862
|
visible: true,
|
|
@@ -3867,13 +3868,17 @@
|
|
|
3867
3868
|
return foldMap[key] ?? key;
|
|
3868
3869
|
} : (v)=>{
|
|
3869
3870
|
const datum = v;
|
|
3870
|
-
const
|
|
3871
|
-
const
|
|
3871
|
+
const colorId = datum?.[encodingColor];
|
|
3872
|
+
const colorAlias = unfoldInfo.colorIdMap?.[colorId]?.alias ?? colorId;
|
|
3872
3873
|
if (hasMultiMeasureGroup) {
|
|
3873
|
-
|
|
3874
|
-
|
|
3874
|
+
if (hasMeasureIdInColor) return colorAlias;
|
|
3875
|
+
const meaAlias = datum && datum[MeasureName] || '';
|
|
3876
|
+
return chunk_QJLMYOTX_i([
|
|
3877
|
+
colorAlias,
|
|
3878
|
+
meaAlias
|
|
3879
|
+
]).join('-');
|
|
3875
3880
|
}
|
|
3876
|
-
return
|
|
3881
|
+
return colorAlias;
|
|
3877
3882
|
},
|
|
3878
3883
|
value: (v)=>{
|
|
3879
3884
|
const datum = v;
|
|
@@ -9454,7 +9459,7 @@
|
|
|
9454
9459
|
title: {
|
|
9455
9460
|
visible: true
|
|
9456
9461
|
},
|
|
9457
|
-
content: createDimensionContent(encoding.tooltip || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
9462
|
+
content: createDimensionContent(encoding.tooltip || [], encoding.color || [], measures, options.foldInfo, unfoldInfo, reshapeMeasures.length > 1)
|
|
9458
9463
|
}
|
|
9459
9464
|
};
|
|
9460
9465
|
return result;
|