diff --git a/static/js/charts.js b/static/js/charts.js index 72777b37..b83647d1 100644 --- a/static/js/charts.js +++ b/static/js/charts.js @@ -26,27 +26,29 @@ class ChartManager { } registerPlugins() { - // Register a plugin for tooltip background + // Register a plugin that draws a vertical dashed line at the active tooltip point. + // Only applies to charts with a cartesian Y scale (line, bar) — skip radial types. Chart.register({ id: 'customTooltip', beforeDraw: (chart) => { - if (chart.tooltip._active && chart.tooltip._active.length) { - const ctx = chart.ctx; - const activePoint = chart.tooltip._active[0]; - const x = activePoint.element.x; - const topY = chart.scales.y.top; - const bottomY = chart.scales.y.bottom; + if (!chart.tooltip || !chart.tooltip._active || !chart.tooltip._active.length) return; + if (!chart.scales.y) return; // no cartesian Y axis (pie/doughnut) - ctx.save(); - ctx.beginPath(); - ctx.setLineDash([5, 5]); - ctx.moveTo(x, topY); - ctx.lineTo(x, bottomY); - ctx.lineWidth = 1; - ctx.strokeStyle = '#665c54'; // bg3 - ctx.stroke(); - ctx.restore(); - } + const ctx = chart.ctx; + const activePoint = chart.tooltip._active[0]; + const x = activePoint.element.x; + const topY = chart.scales.y.top; + const bottomY = chart.scales.y.bottom; + + ctx.save(); + ctx.beginPath(); + ctx.setLineDash([5, 5]); + ctx.moveTo(x, topY); + ctx.lineTo(x, bottomY); + ctx.lineWidth = 1; + ctx.strokeStyle = '#665c54'; // bg3 + ctx.stroke(); + ctx.restore(); } }); }