diff --git a/web/src/components/features/analytics/AnalyticsChart.vue b/web/src/components/features/analytics/AnalyticsChart.vue index a27026e..d87dc30 100644 --- a/web/src/components/features/analytics/AnalyticsChart.vue +++ b/web/src/components/features/analytics/AnalyticsChart.vue @@ -120,7 +120,10 @@ onBeforeUnmount(() => { watch(() => props.section, () => { if (!props.section.allowedChartTypes.includes(currentChartType.value)) { + // Reassigning currentChartType triggers its own watcher, which calls render(). + // Skip render here to avoid double-init race ("Canvas is already in use"). currentChartType.value = props.section.defaultChartType ?? props.section.allowedChartTypes[0] ?? 'bar' + return } render() }, { deep: true }) diff --git a/web/src/components/features/analytics/AnalyticsDrillDownSlideover.vue b/web/src/components/features/analytics/AnalyticsDrillDownSlideover.vue index 1ac4595..88ad715 100644 --- a/web/src/components/features/analytics/AnalyticsDrillDownSlideover.vue +++ b/web/src/components/features/analytics/AnalyticsDrillDownSlideover.vue @@ -3,19 +3,28 @@ v-model:open="open" :title="analyticsStore.drillDown.sectionTitle ?? t('analytics.drillDown.defaultTitle')" :description="analyticsStore.drillDown.bucket ?? ''" + :fullscreen="isMobile" >