From d1a75e1b67cce78af78cece40317bc56830a1cf0 Mon Sep 17 00:00:00 2001 From: MiniPear Date: Fri, 22 Sep 2023 15:53:32 +0800 Subject: [PATCH] fix(tooltip): marker --- .../missing-area-tooltip-marker/step0.png | Bin 0 -> 23872 bytes .../missing-area-tooltip-marker/step1.png | Bin 0 -> 23219 bytes __tests__/plots/interaction/index.ts | 1 + .../indices-line-chart-facet-brush-shared.ts | 1 - .../missing-area-tooltip-marker.ts | 55 ++++++++++++++++ src/interaction/tooltip.ts | 62 +++++++++++------- 6 files changed, 93 insertions(+), 26 deletions(-) create mode 100644 __tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step0.png create mode 100644 __tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step1.png create mode 100644 __tests__/plots/interaction/missing-area-tooltip-marker.ts diff --git a/__tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step0.png b/__tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step0.png new file mode 100644 index 0000000000000000000000000000000000000000..d396d19577d5a47418ca17402d355d71d5e37adb GIT binary patch literal 23872 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 YN1L5KiSUPkCDDQ3wG3btzd1ho7vlmh-T(jq literal 0 HcmV?d00001 diff --git a/__tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step1.png b/__tests__/integration/snapshots/interaction/missing-area-tooltip-marker/step1.png new file mode 100644 index 0000000000000000000000000000000000000000..30d8b770e73d5fe616d5d8f02260c62092d67ec2 GIT binary patch literal 23219 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 literal 0 HcmV?d00001 diff --git a/__tests__/plots/interaction/index.ts b/__tests__/plots/interaction/index.ts index e3bb7f8a70..a71663e8ff 100644 --- a/__tests__/plots/interaction/index.ts +++ b/__tests__/plots/interaction/index.ts @@ -70,3 +70,4 @@ export { settleWeatherLegendFilter } from './seattle-weather-legend-filter'; export { countriesBubbleMultiLegends } from './countries-bubble-multi-legends'; export { pointsPointTooltipMarker } from './points-point-tooltip-marker'; export { mockPieInteraction } from './mock-pie-interaction'; +export { missingAreaTooltipMarker } from './missing-area-tooltip-marker'; diff --git a/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts b/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts index b909f62e7d..7ab816f8be 100644 --- a/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts +++ b/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts @@ -26,7 +26,6 @@ export async function indicesLineChartFacetBrushShared(): Promise { y: 'Close', color: 'Symbol', key: 'Symbol', - title: (d) => new Date(d.Date).toUTCString(), }, state: { inactive: { opacity: '0.3' }, diff --git a/__tests__/plots/interaction/missing-area-tooltip-marker.ts b/__tests__/plots/interaction/missing-area-tooltip-marker.ts new file mode 100644 index 0000000000..1e03e1b38d --- /dev/null +++ b/__tests__/plots/interaction/missing-area-tooltip-marker.ts @@ -0,0 +1,55 @@ +import { G2Spec, PLOT_CLASS_NAME } from '../../../src'; +import { step } from './utils'; + +export function missingAreaTooltipMarker(): G2Spec { + return { + type: 'area', + data: { + type: 'fetch', + value: 'data/aapl.csv', + transform: [ + { + type: 'map', + callback: (d) => ({ + ...d, + close: d.date.getUTCMonth() <= 3 ? NaN : d.close, + }), + }, + ], + }, + encode: { + x: 'date', + y: 'close', + }, + style: { + connect: true, + connectFill: 'grey', + connectFillOpacity: 0.15, + }, + interaction: { + tooltip: { + body: false, + markerR: 10, + markerStrokeWidth: 5, + markerStroke: '#aaa', + }, + }, + }; +} + +missingAreaTooltipMarker.tooltip = true; + +missingAreaTooltipMarker.steps = ({ canvas }) => { + const { document } = canvas; + const [plot] = document.getElementsByClassName(PLOT_CLASS_NAME); + return [ + step(plot, 'pointermove', { + offsetX: 100, + offsetY: 350, + }), + step(plot, 'pointermove', { + offsetX: 176, + offsetY: 350, + }), + ]; +}; diff --git a/src/interaction/tooltip.ts b/src/interaction/tooltip.ts index 0bfbfda978..055989d1a8 100644 --- a/src/interaction/tooltip.ts +++ b/src/interaction/tooltip.ts @@ -236,6 +236,7 @@ function groupItems( scale, groupName, data = elements.map((d) => d['__data__']), + theme: Record = {}, ) { const key = (d) => (d instanceof Date ? +d : d); const T = unique( @@ -253,7 +254,7 @@ function groupItems( groupName !== undefined ? groupName : items.length <= 1 ? true : false; return definedItems.map( - ({ color = itemColorOf(element), name, ...item }) => { + ({ color = itemColorOf(element) || theme.color, name, ...item }) => { const name1 = useGroupName ? groupNameOf(scale, datum) || name : name || groupNameOf(scale, datum); @@ -347,30 +348,34 @@ function hideRuleY(root) { } } -// @todo Fill for composite g component. -function updateMarker(root, { data, style }) { +function updateMarker(root, { data, style, theme }) { if (root.markers) root.markers.forEach((d) => d.remove()); - const markers = data.map((d) => { - const [{ color, element }, point] = d; - const fill = - color || // encode value - element.style.fill || - element.style.stroke || - '#000'; - - const shape = new Circle({ - style: { - cx: point[0], - cy: point[1], - fill, - r: 4, - stroke: '#fff', - strokeWidth: 2, - ...style, - }, + const markers = data + .filter((d) => { + const [{ x, y }] = d; + return defined(x) && defined(y); + }) + .map((d) => { + const [{ color, element }, point] = d; + const fill = + color || // encode value + element.style.fill || + element.style.stroke || + theme.color; + + const shape = new Circle({ + style: { + cx: point[0], + cy: point[1], + fill, + r: 4, + stroke: '#fff', + strokeWidth: 2, + ...style, + }, + }); + return shape; }); - return shape; - }); for (const marker of markers) root.appendChild(marker); root.markers = markers; } @@ -432,6 +437,7 @@ export function seriesTooltip( enterable, mount, bounding, + theme, disableNative = false, marker = true, style: _style = {}, @@ -597,6 +603,7 @@ export function seriesTooltip( scale, groupName, selectedData, + theme, ); // Sort items and filter items. @@ -653,6 +660,7 @@ export function seriesTooltip( updateMarker(root, { data: filteredSeriesData, style: markerStyles, + theme, }); } @@ -760,6 +768,7 @@ export function tooltip( view, mount, bounding, + theme, shared = false, body = true, disableNative = false, @@ -782,7 +791,7 @@ export function tooltip( const data = group.length === 1 && !shared ? singleItem(group[0]) - : groupItems(group, scale, groupName); + : groupItems(group, scale, groupName, undefined, theme); // Sort items and sort. if (sortFunction) { @@ -904,7 +913,7 @@ export function Tooltip(options) { } = options; return (target, viewInstances, emitter) => { const { container, view } = target; - const { scale, markState, coordinate } = view; + const { scale, markState, coordinate, theme } = view; // Get default value from mark states. const defaultSeries = interactionKeyof(markState, 'seriesTooltip'); const defaultShowCrosshairs = interactionKeyof(markState, 'crosshairs'); @@ -915,6 +924,7 @@ export function Tooltip(options) { if (isSeries && hasSeries(markState) && !facet) { return seriesTooltip(plotArea, { ...rest, + theme, elements: selectG2Elements, scale, coordinate, @@ -943,6 +953,7 @@ export function Tooltip(options) { // @ts-ignore return seriesTooltip(plotArea.parentNode.parentNode, { ...rest, + theme, elements: () => elements, scale, coordinate, @@ -964,6 +975,7 @@ export function Tooltip(options) { item, emitter, view, + theme, shared, }); };