fix(dashboard): guard customTooltip plugin against undefined tooltip and missing Y scale
chart.tooltip is undefined during initial draw for radial chart types (doughnut/pie), and chart.scales.y doesn't exist on non-cartesian charts. This crashed chart creation, causing 'Failed to load' messages on all pages.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user