ng-prime-tools 1.0.64 → 1.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/pt-chart-comparison/pt-chart-comparison.component.mjs +15 -25
- package/fesm2022/ng-prime-tools.mjs +14 -24
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/pt-chart-comparison/pt-chart-comparison.component.d.ts +0 -15
- package/lib/pt-chart-comparison/pt-chart-comparison.component.d.ts.map +1 -1
- package/lib/pt-metric-panel/pt-metric-panel.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,6 @@ export class PTChartComparisonComponent {
|
|
|
7
7
|
this.medianTitle = 'Médiane';
|
|
8
8
|
this.xAxisTitle = 'Time';
|
|
9
9
|
this.yAxisTitle = 'Value';
|
|
10
|
-
// Chart dimension inputs
|
|
11
10
|
this.chartHeight = '400px';
|
|
12
11
|
this.chartWidth = '1200px';
|
|
13
12
|
Chart.register(...registerables, ChartDataLabels);
|
|
@@ -18,53 +17,42 @@ export class PTChartComparisonComponent {
|
|
|
18
17
|
ngOnDestroy() {
|
|
19
18
|
this.destroyChart();
|
|
20
19
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Initializes the chart with median and datasets
|
|
23
|
-
*/
|
|
24
20
|
initializeChart() {
|
|
25
21
|
const canvas = this.canvasRef.nativeElement;
|
|
26
22
|
this.destroyChart();
|
|
27
23
|
const config = {
|
|
28
24
|
type: this.chartConfig.type || 'line',
|
|
29
|
-
data: this.getFormattedChartData(),
|
|
25
|
+
data: this.getFormattedChartData(),
|
|
30
26
|
options: this.getChartOptions(),
|
|
31
27
|
};
|
|
32
28
|
this.chart = new Chart(canvas, config);
|
|
33
29
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Computes median values and adds them to the dataset
|
|
36
|
-
*/
|
|
37
30
|
getFormattedChartData() {
|
|
38
31
|
const medianValues = this.calculateMedian();
|
|
39
32
|
return {
|
|
40
33
|
labels: this.chartConfig.data.labels,
|
|
41
34
|
datasets: [
|
|
42
|
-
// Add median line dataset
|
|
43
35
|
{
|
|
44
|
-
label: this.medianTitle || 'Médiane',
|
|
36
|
+
label: this.chartConfig.medianTitle || this.medianTitle || 'Médiane',
|
|
45
37
|
data: medianValues,
|
|
46
|
-
borderColor: '#0000FF',
|
|
47
|
-
borderWidth:
|
|
38
|
+
borderColor: '#0000FF',
|
|
39
|
+
borderWidth: 3,
|
|
48
40
|
backgroundColor: 'transparent',
|
|
49
41
|
pointRadius: 0,
|
|
50
42
|
fill: false,
|
|
51
43
|
tension: 0.1,
|
|
52
|
-
borderDash: [
|
|
44
|
+
borderDash: [], // ✅ médiane continue
|
|
53
45
|
},
|
|
54
|
-
// Keep existing datasets
|
|
55
46
|
...this.chartConfig.data.datasets,
|
|
56
47
|
],
|
|
57
48
|
};
|
|
58
49
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Computes median values from all datasets at each time point
|
|
61
|
-
*/
|
|
62
50
|
calculateMedian() {
|
|
63
51
|
const datasets = this.chartConfig.data.datasets;
|
|
64
52
|
return this.chartConfig.data.labels.map((_, index) => {
|
|
65
53
|
const valuesAtTime = datasets
|
|
66
54
|
.map((dataset) => dataset.data[index])
|
|
67
|
-
.filter((val) => val
|
|
55
|
+
.filter((val) => typeof val === 'number' && !Number.isNaN(val));
|
|
68
56
|
if (valuesAtTime.length === 0)
|
|
69
57
|
return 0;
|
|
70
58
|
valuesAtTime.sort((a, b) => a - b);
|
|
@@ -74,21 +62,24 @@ export class PTChartComparisonComponent {
|
|
|
74
62
|
: valuesAtTime[middle];
|
|
75
63
|
});
|
|
76
64
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Defines chart options including Y-axis scaling
|
|
79
|
-
*/
|
|
80
65
|
getChartOptions() {
|
|
66
|
+
const externalOptions = this.chartConfig.options ?? {};
|
|
81
67
|
return {
|
|
82
68
|
responsive: true,
|
|
83
69
|
maintainAspectRatio: false,
|
|
84
70
|
plugins: {
|
|
85
71
|
legend: { display: true, position: 'top' },
|
|
86
72
|
tooltip: { mode: 'index', intersect: false },
|
|
73
|
+
datalabels: {
|
|
74
|
+
display: false, // ✅ supprime les nombres au-dessus des lignes
|
|
75
|
+
},
|
|
76
|
+
...(externalOptions.plugins ?? {}),
|
|
87
77
|
},
|
|
88
78
|
scales: {
|
|
89
79
|
x: {
|
|
90
80
|
title: { display: true, text: this.chartConfig.xAxisTitle || 'Time' },
|
|
91
81
|
ticks: { font: { size: 12 } },
|
|
82
|
+
...externalOptions.scales?.x,
|
|
92
83
|
},
|
|
93
84
|
y: {
|
|
94
85
|
title: {
|
|
@@ -109,13 +100,12 @@ export class PTChartComparisonComponent {
|
|
|
109
100
|
display: true,
|
|
110
101
|
color: '#000',
|
|
111
102
|
},
|
|
103
|
+
...externalOptions.scales?.y,
|
|
112
104
|
},
|
|
113
105
|
},
|
|
106
|
+
...externalOptions,
|
|
114
107
|
};
|
|
115
108
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Destroys the existing chart instance if present
|
|
118
|
-
*/
|
|
119
109
|
destroyChart() {
|
|
120
110
|
if (this.chart) {
|
|
121
111
|
this.chart.destroy();
|
|
@@ -150,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
150
140
|
type: ViewChild,
|
|
151
141
|
args: ['chartCanvas', { static: true }]
|
|
152
142
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNoYXJ0LWNvbXBhcmlzb24vcHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNoYXJ0LWNvbXBhcmlzb24vcHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEtBQUssRUFFTCxhQUFhLEdBR2QsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7O0FBUXhELE1BQU0sT0FBTywwQkFBMEI7SUFvQnJDO1FBbEJTLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBQ2hDLGVBQVUsR0FBVyxNQUFNLENBQUM7UUFDNUIsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQU90Qyx5QkFBeUI7UUFDaEIsZ0JBQVcsR0FBVyxPQUFPLENBQUM7UUFDOUIsZUFBVSxHQUFXLFFBQVEsQ0FBQztRQVFyQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksRUFBRSxD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RkRjYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCO3dEQUt0QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR04sU0FBUztzQkFEUixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENoYXJ0LFxuICBDaGFydENvbmZpZ3VyYXRpb24sXG4gIHJlZ2lzdGVyYWJsZXMsXG4gIENoYXJ0RGF0YSxcbiAgQ2hhcnRPcHRpb25zLFxufSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgQ2hhcnREYXRhTGFiZWxzIGZyb20gJ2NoYXJ0anMtcGx1Z2luLWRhdGFsYWJlbHMnO1xuaW1wb3J0IHsgQ2hhcnRDb25maWcsIERhdGFzZXQgfSBmcm9tICcuLi9tb2RlbHMvY2hhcnQtY29uZmlnLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtY2hhcnQtY29tcGFyaXNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1jaGFydC1jb21wYXJpc29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUQ2hhcnRDb21wYXJpc29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjaGFydENvbmZpZyE6IENoYXJ0Q29uZmlnO1xuICBASW5wdXQoKSBtZWRpYW5UaXRsZTogc3RyaW5nID0gJ03DqWRpYW5lJztcbiAgQElucHV0KCkgeEF4aXNUaXRsZTogc3RyaW5nID0gJ1RpbWUnO1xuICBASW5wdXQoKSB5QXhpc1RpdGxlOiBzdHJpbmcgPSAnVmFsdWUnO1xuXG4gIC8vIFktQXhpcyBtYW51YWwgaW5wdXRzXG4gIEBJbnB1dCgpIHlNaW4hOiBudW1iZXI7XG4gIEBJbnB1dCgpIHlNYXghOiBudW1iZXI7XG4gIEBJbnB1dCgpIHlTdGVwU2l6ZSE6IG51bWJlcjtcblxuICAvLyBDaGFydCBkaW1lbnNpb24gaW5wdXRzXG4gIEBJbnB1dCgpIGNoYXJ0SGVpZ2h0OiBzdHJpbmcgPSAnNDAwcHgnO1xuICBASW5wdXQoKSBjaGFydFdpZHRoOiBzdHJpbmcgPSAnMTIwMHB4JztcblxuICBAVmlld0NoaWxkKCdjaGFydENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXG4gIHByaXZhdGUgY2hhcnQhOiBDaGFydDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBDaGFydC5yZWdpc3RlciguLi5yZWdpc3RlcmFibGVzLCBDaGFydERhdGFMYWJlbHMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveUNoYXJ0KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNoYXJ0IHdpdGggbWVkaWFuIGFuZCBkYXRhc2V0c1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ2hhcnQoKSB7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5jYW52YXNSZWYubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmRlc3Ryb3lDaGFydCgpO1xuXG4gICAgY29uc3QgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICB0eXBlOiB0aGlzLmNoYXJ0Q29uZmlnLnR5cGUgfHwgJ2xpbmUnLFxuICAgICAgZGF0YTogdGhpcy5nZXRGb3JtYXR0ZWRDaGFydERhdGEoKSwgLy8gR2V0IGRhdGEgd2l0aCBtZWRpYW5cbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0Q2hhcnRPcHRpb25zKCksXG4gICAgfTtcblxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoY2FudmFzLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIG1lZGlhbiB2YWx1ZXMgYW5kIGFkZHMgdGhlbSB0byB0aGUgZGF0YXNldFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRDaGFydERhdGEoKTogQ2hhcnREYXRhIHtcbiAgICBjb25zdCBtZWRpYW5WYWx1ZXMgPSB0aGlzLmNhbGN1bGF0ZU1lZGlhbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsczogdGhpcy5jaGFydENvbmZpZy5kYXRhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBbXG4gICAgICAgIC8vIEFkZCBtZWRpYW4gbGluZSBkYXRhc2V0XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogdGhpcy5tZWRpYW5UaXRsZSB8fCAnTcOpZGlhbmUnLFxuICAgICAgICAgIGRhdGE6IG1lZGlhblZhbHVlcyxcbiAgICAgICAgICBib3JkZXJDb2xvcjogJyMwMDAwRkYnLCAvLyBCbHVlIGNvbG9yXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IDIsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgIHBvaW50UmFkaXVzOiAwLFxuICAgICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgICAgIHRlbnNpb246IDAuMSxcbiAgICAgICAgICBib3JkZXJEYXNoOiBbNSwgNV0sIC8vIERhc2hlZCBsaW5lXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEtlZXAgZXhpc3RpbmcgZGF0YXNldHNcbiAgICAgICAgLi4uKHRoaXMuY2hhcnRDb25maWcuZGF0YS5kYXRhc2V0cyBhcyBEYXRhc2V0W10pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIG1lZGlhbiB2YWx1ZXMgZnJvbSBhbGwgZGF0YXNldHMgYXQgZWFjaCB0aW1lIHBvaW50XG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZU1lZGlhbigpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNoYXJ0Q29uZmlnLmRhdGEuZGF0YXNldHMgYXMgRGF0YXNldFtdO1xuXG4gICAgcmV0dXJuIHRoaXMuY2hhcnRDb25maWcuZGF0YS5sYWJlbHMhLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlc0F0VGltZSA9IGRhdGFzZXRzXG4gICAgICAgIC5tYXAoKGRhdGFzZXQpID0+IGRhdGFzZXQuZGF0YVtpbmRleF0pXG4gICAgICAgIC5maWx0ZXIoKHZhbCkgPT4gdmFsICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICBpZiAodmFsdWVzQXRUaW1lLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgICAgIHZhbHVlc0F0VGltZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICBjb25zdCBtaWRkbGUgPSBNYXRoLmZsb29yKHZhbHVlc0F0VGltZS5sZW5ndGggLyAyKTtcblxuICAgICAgcmV0dXJuIHZhbHVlc0F0VGltZS5sZW5ndGggJSAyID09PSAwXG4gICAgICAgID8gKHZhbHVlc0F0VGltZVttaWRkbGUgLSAxXSArIHZhbHVlc0F0VGltZVttaWRkbGVdKSAvIDJcbiAgICAgICAgOiB2YWx1ZXNBdFRpbWVbbWlkZGxlXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGNoYXJ0IG9wdGlvbnMgaW5jbHVkaW5nIFktYXhpcyBzY2FsaW5nXG4gICAqL1xuICBwcml2YXRlIGdldENoYXJ0T3B0aW9ucygpOiBDaGFydE9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGxlZ2VuZDogeyBkaXNwbGF5OiB0cnVlLCBwb3NpdGlvbjogJ3RvcCcgfSxcbiAgICAgICAgdG9vbHRpcDogeyBtb2RlOiAnaW5kZXgnLCBpbnRlcnNlY3Q6IGZhbHNlIH0sXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICB0aXRsZTogeyBkaXNwbGF5OiB0cnVlLCB0ZXh0OiB0aGlzLmNoYXJ0Q29uZmlnLnhBeGlzVGl0bGUgfHwgJ1RpbWUnIH0sXG4gICAgICAgICAgdGlja3M6IHsgZm9udDogeyBzaXplOiAxMiB9IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHk6IHtcbiAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuY2hhcnRDb25maWcueUF4aXNUaXRsZSB8fCAnVmFsdWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWluOiB0aGlzLmNoYXJ0Q29uZmlnLnNjYWxlcz8ueT8ubWluLFxuICAgICAgICAgIG1heDogdGhpcy5jaGFydENvbmZpZy5zY2FsZXM/Lnk/Lm1heCxcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgc3RlcFNpemU6IHRoaXMuY2hhcnRDb25maWcuc2NhbGVzPy55Py50aWNrcz8uc3RlcFNpemUsXG4gICAgICAgICAgICBmb250OiB7IHNpemU6IDE2LCB3ZWlnaHQ6ICdib2xkJyB9LFxuICAgICAgICAgICAgY29sb3I6ICcjMzMzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLDAsMCwwLjEpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvcmRlcjoge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgZXhpc3RpbmcgY2hhcnQgaW5zdGFuY2UgaWYgcHJlc2VudFxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0cm95Q2hhcnQoKSB7XG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgdGhpcy5jaGFydCA9IHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtc2Nyb2xsLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjaGFydC1pbm5lclwiXG4gICAgW3N0eWxlLndpZHRoXT1cImNoYXJ0Q29uZmlnLmNoYXJ0V2lkdGggfHwgJzEyMDBweCdcIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiY2hhcnRDb25maWcuY2hhcnRIZWlnaHQgfHwgJzQwMHB4J1wiXG4gID5cbiAgICA8Y2FudmFzICNjaGFydENhbnZhcz48L2NhbnZhcz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNoYXJ0LWNvbXBhcmlzb24vcHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNoYXJ0LWNvbXBhcmlzb24vcHQtY2hhcnQtY29tcGFyaXNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEtBQUssRUFFTCxhQUFhLEdBR2QsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7O0FBUXhELE1BQU0sT0FBTywwQkFBMEI7SUFrQnJDO1FBaEJTLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBQ2hDLGVBQVUsR0FBVyxNQUFNLENBQUM7UUFDNUIsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQU03QixnQkFBVyxHQUFXLE9BQU8sQ0FBQztRQUM5QixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBUXJDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLE1BQU0sTUFBTSxHQUF1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LENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQWdCLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7K0dBeklVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHFaQ3ZCdkMsNlBBU0E7OzRGRGNhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxxQkFBcUI7d0RBS3RCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHTixTQUFTO3NCQURSLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhcnQsXG4gIENoYXJ0Q29uZmlndXJhdGlvbixcbiAgcmVnaXN0ZXJhYmxlcyxcbiAgQ2hhcnREYXRhLFxuICBDaGFydE9wdGlvbnMsXG59IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBDaGFydERhdGFMYWJlbHMgZnJvbSAnY2hhcnRqcy1wbHVnaW4tZGF0YWxhYmVscyc7XG5pbXBvcnQgeyBDaGFydENvbmZpZywgRGF0YXNldCB9IGZyb20gJy4uL21vZGVscy9jaGFydC1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1jaGFydC1jb21wYXJpc29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LWNoYXJ0LWNvbXBhcmlzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wdC1jaGFydC1jb21wYXJpc29uLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRDaGFydENvbXBhcmlzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNoYXJ0Q29uZmlnITogQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIG1lZGlhblRpdGxlOiBzdHJpbmcgPSAnTcOpZGlhbmUnO1xuICBASW5wdXQoKSB4QXhpc1RpdGxlOiBzdHJpbmcgPSAnVGltZSc7XG4gIEBJbnB1dCgpIHlBeGlzVGl0bGU6IHN0cmluZyA9ICdWYWx1ZSc7XG5cbiAgQElucHV0KCkgeU1pbiE6IG51bWJlcjtcbiAgQElucHV0KCkgeU1heCE6IG51bWJlcjtcbiAgQElucHV0KCkgeVN0ZXBTaXplITogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGNoYXJ0SGVpZ2h0OiBzdHJpbmcgPSAnNDAwcHgnO1xuICBASW5wdXQoKSBjaGFydFdpZHRoOiBzdHJpbmcgPSAnMTIwMHB4JztcblxuICBAVmlld0NoaWxkKCdjaGFydENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNhbnZhc1JlZiE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXG4gIHByaXZhdGUgY2hhcnQhOiBDaGFydDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBDaGFydC5yZWdpc3RlciguLi5yZWdpc3RlcmFibGVzLCBDaGFydERhdGFMYWJlbHMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveUNoYXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDaGFydCgpIHtcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuZGVzdHJveUNoYXJ0KCk7XG5cbiAgICBjb25zdCBjb25maWc6IENoYXJ0Q29uZmlndXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRDb25maWcudHlwZSB8fCAnbGluZScsXG4gICAgICBkYXRhOiB0aGlzLmdldEZvcm1hdHRlZENoYXJ0RGF0YSgpLFxuICAgICAgb3B0aW9uczogdGhpcy5nZXRDaGFydE9wdGlvbnMoKSxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydChjYW52YXMsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdHRlZENoYXJ0RGF0YSgpOiBDaGFydERhdGEge1xuICAgIGNvbnN0IG1lZGlhblZhbHVlcyA9IHRoaXMuY2FsY3VsYXRlTWVkaWFuKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWxzOiB0aGlzLmNoYXJ0Q29uZmlnLmRhdGEubGFiZWxzLFxuICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiB0aGlzLmNoYXJ0Q29uZmlnLm1lZGlhblRpdGxlIHx8IHRoaXMubWVkaWFuVGl0bGUgfHwgJ03DqWRpYW5lJyxcbiAgICAgICAgICBkYXRhOiBtZWRpYW5WYWx1ZXMsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6ICcjMDAwMEZGJyxcbiAgICAgICAgICBib3JkZXJXaWR0aDogMyxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgcG9pbnRSYWRpdXM6IDAsXG4gICAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICAgICAgdGVuc2lvbjogMC4xLFxuICAgICAgICAgIGJvcmRlckRhc2g6IFtdLCAvLyDinIUgbcOpZGlhbmUgY29udGludWVcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHRoaXMuY2hhcnRDb25maWcuZGF0YS5kYXRhc2V0cyBhcyBEYXRhc2V0W10pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZWRpYW4oKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jaGFydENvbmZpZy5kYXRhLmRhdGFzZXRzIGFzIERhdGFzZXRbXTtcblxuICAgIHJldHVybiB0aGlzLmNoYXJ0Q29uZmlnLmRhdGEubGFiZWxzIS5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZXNBdFRpbWUgPSBkYXRhc2V0c1xuICAgICAgICAubWFwKChkYXRhc2V0KSA9PiBkYXRhc2V0LmRhdGFbaW5kZXhdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICh2YWwpOiB2YWwgaXMgbnVtYmVyID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odmFsKSxcbiAgICAgICAgKTtcblxuICAgICAgaWYgKHZhbHVlc0F0VGltZS5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gICAgICB2YWx1ZXNBdFRpbWUuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgY29uc3QgbWlkZGxlID0gTWF0aC5mbG9vcih2YWx1ZXNBdFRpbWUubGVuZ3RoIC8gMik7XG5cbiAgICAgIHJldHVybiB2YWx1ZXNBdFRpbWUubGVuZ3RoICUgMiA9PT0gMFxuICAgICAgICA/ICh2YWx1ZXNBdFRpbWVbbWlkZGxlIC0gMV0gKyB2YWx1ZXNBdFRpbWVbbWlkZGxlXSkgLyAyXG4gICAgICAgIDogdmFsdWVzQXRUaW1lW21pZGRsZV07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENoYXJ0T3B0aW9ucygpOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IGV4dGVybmFsT3B0aW9ucyA9IHRoaXMuY2hhcnRDb25maWcub3B0aW9ucyA/PyB7fTtcblxuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGxlZ2VuZDogeyBkaXNwbGF5OiB0cnVlLCBwb3NpdGlvbjogJ3RvcCcgfSxcbiAgICAgICAgdG9vbHRpcDogeyBtb2RlOiAnaW5kZXgnLCBpbnRlcnNlY3Q6IGZhbHNlIH0sXG4gICAgICAgIGRhdGFsYWJlbHM6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwgLy8g4pyFIHN1cHByaW1lIGxlcyBub21icmVzIGF1LWRlc3N1cyBkZXMgbGlnbmVzXG4gICAgICAgIH0sXG4gICAgICAgIC4uLihleHRlcm5hbE9wdGlvbnMucGx1Z2lucyA/PyB7fSksXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICB0aXRsZTogeyBkaXNwbGF5OiB0cnVlLCB0ZXh0OiB0aGlzLmNoYXJ0Q29uZmlnLnhBeGlzVGl0bGUgfHwgJ1RpbWUnIH0sXG4gICAgICAgICAgdGlja3M6IHsgZm9udDogeyBzaXplOiAxMiB9IH0sXG4gICAgICAgICAgLi4uKGV4dGVybmFsT3B0aW9ucy5zY2FsZXMgYXMgYW55KT8ueCxcbiAgICAgICAgfSxcbiAgICAgICAgeToge1xuICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5jaGFydENvbmZpZy55QXhpc1RpdGxlIHx8ICdWYWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW46IHRoaXMuY2hhcnRDb25maWcuc2NhbGVzPy55Py5taW4sXG4gICAgICAgICAgbWF4OiB0aGlzLmNoYXJ0Q29uZmlnLnNjYWxlcz8ueT8ubWF4LFxuICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICBzdGVwU2l6ZTogdGhpcy5jaGFydENvbmZpZy5zY2FsZXM/Lnk/LnRpY2tzPy5zdGVwU2l6ZSxcbiAgICAgICAgICAgIGZvbnQ6IHsgc2l6ZTogMTYsIHdlaWdodDogJ2JvbGQnIH0sXG4gICAgICAgICAgICBjb2xvcjogJyMzMzMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwLDAuMSknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9yZGVyOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgICAgY29sb3I6ICcjMDAwJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLihleHRlcm5hbE9wdGlvbnMuc2NhbGVzIGFzIGFueSk/LnksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgLi4uZXh0ZXJuYWxPcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lDaGFydCgpIHtcbiAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNoYXJ0ID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1zY3JvbGwtY29udGFpbmVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNoYXJ0LWlubmVyXCJcbiAgICBbc3R5bGUud2lkdGhdPVwiY2hhcnRDb25maWcuY2hhcnRXaWR0aCB8fCAnMTIwMHB4J1wiXG4gICAgW3N0eWxlLmhlaWdodF09XCJjaGFydENvbmZpZy5jaGFydEhlaWdodCB8fCAnNDAwcHgnXCJcbiAgPlxuICAgIDxjYW52YXMgI2NoYXJ0Q2FudmFzPjwvY2FudmFzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -5482,7 +5482,6 @@ class PTChartComparisonComponent {
|
|
|
5482
5482
|
this.medianTitle = 'Médiane';
|
|
5483
5483
|
this.xAxisTitle = 'Time';
|
|
5484
5484
|
this.yAxisTitle = 'Value';
|
|
5485
|
-
// Chart dimension inputs
|
|
5486
5485
|
this.chartHeight = '400px';
|
|
5487
5486
|
this.chartWidth = '1200px';
|
|
5488
5487
|
Chart.register(...registerables, ChartDataLabels);
|
|
@@ -5493,53 +5492,42 @@ class PTChartComparisonComponent {
|
|
|
5493
5492
|
ngOnDestroy() {
|
|
5494
5493
|
this.destroyChart();
|
|
5495
5494
|
}
|
|
5496
|
-
/**
|
|
5497
|
-
* Initializes the chart with median and datasets
|
|
5498
|
-
*/
|
|
5499
5495
|
initializeChart() {
|
|
5500
5496
|
const canvas = this.canvasRef.nativeElement;
|
|
5501
5497
|
this.destroyChart();
|
|
5502
5498
|
const config = {
|
|
5503
5499
|
type: this.chartConfig.type || 'line',
|
|
5504
|
-
data: this.getFormattedChartData(),
|
|
5500
|
+
data: this.getFormattedChartData(),
|
|
5505
5501
|
options: this.getChartOptions(),
|
|
5506
5502
|
};
|
|
5507
5503
|
this.chart = new Chart(canvas, config);
|
|
5508
5504
|
}
|
|
5509
|
-
/**
|
|
5510
|
-
* Computes median values and adds them to the dataset
|
|
5511
|
-
*/
|
|
5512
5505
|
getFormattedChartData() {
|
|
5513
5506
|
const medianValues = this.calculateMedian();
|
|
5514
5507
|
return {
|
|
5515
5508
|
labels: this.chartConfig.data.labels,
|
|
5516
5509
|
datasets: [
|
|
5517
|
-
// Add median line dataset
|
|
5518
5510
|
{
|
|
5519
|
-
label: this.medianTitle || 'Médiane',
|
|
5511
|
+
label: this.chartConfig.medianTitle || this.medianTitle || 'Médiane',
|
|
5520
5512
|
data: medianValues,
|
|
5521
|
-
borderColor: '#0000FF',
|
|
5522
|
-
borderWidth:
|
|
5513
|
+
borderColor: '#0000FF',
|
|
5514
|
+
borderWidth: 3,
|
|
5523
5515
|
backgroundColor: 'transparent',
|
|
5524
5516
|
pointRadius: 0,
|
|
5525
5517
|
fill: false,
|
|
5526
5518
|
tension: 0.1,
|
|
5527
|
-
borderDash: [
|
|
5519
|
+
borderDash: [], // ✅ médiane continue
|
|
5528
5520
|
},
|
|
5529
|
-
// Keep existing datasets
|
|
5530
5521
|
...this.chartConfig.data.datasets,
|
|
5531
5522
|
],
|
|
5532
5523
|
};
|
|
5533
5524
|
}
|
|
5534
|
-
/**
|
|
5535
|
-
* Computes median values from all datasets at each time point
|
|
5536
|
-
*/
|
|
5537
5525
|
calculateMedian() {
|
|
5538
5526
|
const datasets = this.chartConfig.data.datasets;
|
|
5539
5527
|
return this.chartConfig.data.labels.map((_, index) => {
|
|
5540
5528
|
const valuesAtTime = datasets
|
|
5541
5529
|
.map((dataset) => dataset.data[index])
|
|
5542
|
-
.filter((val) => val
|
|
5530
|
+
.filter((val) => typeof val === 'number' && !Number.isNaN(val));
|
|
5543
5531
|
if (valuesAtTime.length === 0)
|
|
5544
5532
|
return 0;
|
|
5545
5533
|
valuesAtTime.sort((a, b) => a - b);
|
|
@@ -5549,21 +5537,24 @@ class PTChartComparisonComponent {
|
|
|
5549
5537
|
: valuesAtTime[middle];
|
|
5550
5538
|
});
|
|
5551
5539
|
}
|
|
5552
|
-
/**
|
|
5553
|
-
* Defines chart options including Y-axis scaling
|
|
5554
|
-
*/
|
|
5555
5540
|
getChartOptions() {
|
|
5541
|
+
const externalOptions = this.chartConfig.options ?? {};
|
|
5556
5542
|
return {
|
|
5557
5543
|
responsive: true,
|
|
5558
5544
|
maintainAspectRatio: false,
|
|
5559
5545
|
plugins: {
|
|
5560
5546
|
legend: { display: true, position: 'top' },
|
|
5561
5547
|
tooltip: { mode: 'index', intersect: false },
|
|
5548
|
+
datalabels: {
|
|
5549
|
+
display: false, // ✅ supprime les nombres au-dessus des lignes
|
|
5550
|
+
},
|
|
5551
|
+
...(externalOptions.plugins ?? {}),
|
|
5562
5552
|
},
|
|
5563
5553
|
scales: {
|
|
5564
5554
|
x: {
|
|
5565
5555
|
title: { display: true, text: this.chartConfig.xAxisTitle || 'Time' },
|
|
5566
5556
|
ticks: { font: { size: 12 } },
|
|
5557
|
+
...externalOptions.scales?.x,
|
|
5567
5558
|
},
|
|
5568
5559
|
y: {
|
|
5569
5560
|
title: {
|
|
@@ -5584,13 +5575,12 @@ class PTChartComparisonComponent {
|
|
|
5584
5575
|
display: true,
|
|
5585
5576
|
color: '#000',
|
|
5586
5577
|
},
|
|
5578
|
+
...externalOptions.scales?.y,
|
|
5587
5579
|
},
|
|
5588
5580
|
},
|
|
5581
|
+
...externalOptions,
|
|
5589
5582
|
};
|
|
5590
5583
|
}
|
|
5591
|
-
/**
|
|
5592
|
-
* Destroys the existing chart instance if present
|
|
5593
|
-
*/
|
|
5594
5584
|
destroyChart() {
|
|
5595
5585
|
if (this.chart) {
|
|
5596
5586
|
this.chart.destroy();
|