feat: Referenzkurve für TDR-Chart integriert

- Neues Verzeichnis `tdr-reference-curves` für JSON-Referenzdaten hinzugefügt
- Redux Slice `tdrReferenceChartSlice` erstellt
- Thunk `fetchAllTDRReferenceChartThunk` zum Laden aller Referenzdaten integriert
- Service `fetchAllTDRReferenceChartData` mit Umgebungsunterscheidung (dev/prod)
- Anzeige der Referenzkurve im TDR-Chart mit Tooltip und gestrichelter Linie
- Referenzdaten werden automatisch beim Laden der Seite in Redux geladen
This commit is contained in:
ISA
2025-03-21 13:28:43 +01:00
parent 33e66269c2
commit 93136d0a38
71 changed files with 280733 additions and 5 deletions

View File

@@ -23,6 +23,12 @@ const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
selectedSlot !== null ? state.tdrChart.data[selectedSlot] || [] : []
);
const referenceChartData = useSelector((state: RootState) =>
selectedSlot !== null
? state.tdrReferenceChart.referenceData[selectedSlot] || []
: []
);
useEffect(() => {
import("chartjs-plugin-zoom").then((zoomPlugin) => {
Chart.register(...registerables, zoomPlugin.default);
@@ -51,6 +57,21 @@ const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
yAxisKey: "p", // Pegel // statt "m"
},
},
{
label: "Referenzkurve",
data: referenceChartData,
borderColor: "black", // Schwarz für Referenzkurve
borderWidth: 1,
borderDash: [5, 5], // Gepunktete Linie
pointRadius: 3, // Punkte für Tooltip sichtbar machen
pointHoverRadius: 5, // Größere Punkte beim Hover
pointBackgroundColor: "black",
tension: 0.1,
parsing: {
xAxisKey: "d",
yAxisKey: "p",
},
},
],
},
options: {
@@ -80,10 +101,21 @@ const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
title: () => "", // 🚫 Entfernt die erste Zeile mit der Nummer
label: function (context) {
const rawData = context.raw as { d: number; p: number };
return [
`Entfernung: ${rawData.d.toFixed(0)} Meter`,
`Pegel: ${rawData.p.toFixed(2)}`,
];
// 👇 Unterscheide zwischen Mess- und Referenzkurve
if (context.dataset.label === "Referenzkurve") {
return [
`Referenzwert`,
`Entfernung: ${rawData.d.toFixed(0)} Meter`,
`Pegel: ${rawData.p.toFixed(2)}`,
];
} else {
return [
`Messwert`,
`Entfernung: ${rawData.d.toFixed(0)} Meter`,
`Pegel: ${rawData.p.toFixed(2)}`,
];
}
},
},
},