fix(frontend): detruit les graphiques avec leur composant

Chart.js conserve chaque instance dans un registre lie au canvas et lui
attache un observateur de redimensionnement. Sans destroy, tout survit a la
destruction du composant, et une re-creation sur le meme canvas echoue avec
"Canvas is already in use".

Les doubles de test gagnent destroy : TestBed detruit les fixtures apres
chaque test, un mock sans cette methode fait tomber les specs existantes.
This commit is contained in:
Johan LEROY
2026-09-16 09:20:17 +02:00
parent 7b9406965e
commit 0259f66b62
4 changed files with 90 additions and 8 deletions
@@ -1,4 +1,12 @@
import { Component, ElementRef, ViewChild, input, effect, AfterViewInit } from '@angular/core';
import {
Component,
ElementRef,
ViewChild,
input,
effect,
AfterViewInit,
OnDestroy,
} from '@angular/core';
import { Chart, registerables } from 'chart.js';
Chart.register(...registerables);
@@ -9,7 +17,7 @@ Chart.register(...registerables);
templateUrl: './consumption-gauge.html',
styleUrl: './consumption-gauge.scss',
})
export class ConsumptionGauge implements AfterViewInit {
export class ConsumptionGauge implements AfterViewInit, OnDestroy {
consumption = input.required<number>();
capacity = input.required<number>();
@@ -52,4 +60,8 @@ export class ConsumptionGauge implements AfterViewInit {
},
});
}
ngOnDestroy(): void {
this.chart?.destroy();
}
}