From 344526b1b2687cdaf7d50e781312cfed3fb387e2 Mon Sep 17 00:00:00 2001 From: Nikolai Giman Date: Mon, 27 Apr 2026 01:06:22 +0200 Subject: [PATCH] fix: handle drill-down correctly --- api/src/tv-modules/analytics/AnalyticsRoutes.ts | 1 - .../features/analytics/AnalyticsChart.vue | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/api/src/tv-modules/analytics/AnalyticsRoutes.ts b/api/src/tv-modules/analytics/AnalyticsRoutes.ts index 688ef9e..ed2650c 100644 --- a/api/src/tv-modules/analytics/AnalyticsRoutes.ts +++ b/api/src/tv-modules/analytics/AnalyticsRoutes.ts @@ -23,6 +23,5 @@ export default class AnalyticsRoutes implements Routable { const guards = [IsLoggedIn, RejectApiTokenAuth, CanAccessAnalytics] this.router.get('/sections', guards, this.controller.fetchSections) this.router.get('/drilldown/:sectionId', guards, this.controller.fetchDrillDown) - this.router.get('/drill-down/:sectionId', guards, this.controller.fetchDrillDown) } } diff --git a/web/src/components/features/analytics/AnalyticsChart.vue b/web/src/components/features/analytics/AnalyticsChart.vue index d87dc30..62fd571 100644 --- a/web/src/components/features/analytics/AnalyticsChart.vue +++ b/web/src/components/features/analytics/AnalyticsChart.vue @@ -61,9 +61,19 @@ function render() { if (props.section.payload.kind !== 'series') return const config: ChartConfiguration = build(props.section, currentChartType.value) + const isDrillable = !!props.section.drillDown + config.options = { ...(config.options ?? {}), - onClick: (_evt, elements, chart) => { + onHover: (event, elements) => { + const target = event.native?.target as HTMLElement | undefined + if (!target) return + target.style.cursor = isDrillable && elements.length ? 'pointer' : 'default' + }, + } + + if (isDrillable) { + config.options.onClick = (_evt, elements, chart) => { if (!elements.length) return const el = elements[0] const datasetIndex = el.datasetIndex @@ -78,7 +88,7 @@ function render() { index, meta: sectionDs?.meta, }) - }, + } } if (instance) {