diff --git a/apps/frontend/src/components/analytics-dashboard/analytics-chart/AnalyticsChart.client.vue b/apps/frontend/src/components/analytics-dashboard/analytics-chart/AnalyticsChart.client.vue index 930d56c040..712a8fe9b1 100644 --- a/apps/frontend/src/components/analytics-dashboard/analytics-chart/AnalyticsChart.client.vue +++ b/apps/frontend/src/components/analytics-dashboard/analytics-chart/AnalyticsChart.client.vue @@ -775,19 +775,22 @@ function suppressUpcomingChartClick() { }, 350) } -function clearUnpinnedTouchInteraction(ignoreClick: boolean) { +function clearUnpinnedTouchInteraction(ignoreClick: boolean, pinHover = false) { if (props.pinnedSliceIndex !== null) return + if (ignoreClick) { + suppressUpcomingChartClick() + } + if (pinHover) { + emit('touch-drag') + } + clearChartActiveState() updateChartWithoutGeometry() - if (ignoreClick) { - suppressUpcomingChartClick() - emit('touch-drag') - return + if (!pinHover) { + emit('hover', { visible: false, x: 0, y: 0, sliceIndex: null }) } - - emit('hover', { visible: false, x: 0, y: 0, sliceIndex: null }) } function handleCanvasClickCapture(event: MouseEvent) { @@ -918,7 +921,7 @@ function handleRangePointerEnd(event: PointerEvent) { if (isRangeSelecting && rangeSelectPointerType === 'touch') { event.preventDefault() - clearUnpinnedTouchInteraction(true) + clearUnpinnedTouchInteraction(true, true) } else if (isRangeSelecting && startSliceIndex !== null && endSliceIndex !== null) { event.preventDefault() emit('range-select', { startSliceIndex, endSliceIndex }) diff --git a/apps/frontend/src/components/analytics-dashboard/analytics-chart/analytics-chart-plot/use-analytics-chart-interactions.ts b/apps/frontend/src/components/analytics-dashboard/analytics-chart/analytics-chart-plot/use-analytics-chart-interactions.ts index 25c7099a43..4b19880945 100644 --- a/apps/frontend/src/components/analytics-dashboard/analytics-chart/analytics-chart-plot/use-analytics-chart-interactions.ts +++ b/apps/frontend/src/components/analytics-dashboard/analytics-chart/analytics-chart-plot/use-analytics-chart-interactions.ts @@ -110,6 +110,8 @@ export function useAnalyticsChartInteractions({ function onTouchDragEnd() { ignoreUpcomingChartClick() + if (!hoverState.visible || hoverState.sliceIndex === null) return + isHoverPinned.value = true } function onChartGeometry(payload: AnalyticsChartGeometryPayload) {