Files
CPLv4.0/services/fetchLoopChartData.ts
ISA 25b63e3a31 feat: Redux-Thunk für analoge Eingänge integriert & useFetchAnalogeEingaenge entfernt
- `fetchAnalogeEingaengeThunk` in `AnalogeEingaengeTable.tsx` verwendet, um API-Daten in Redux zu speichern.
- `useFetchAnalogeEingaenge` entfernt, um doppelte API-Aufrufe zu vermeiden.
- Sicherstellung, dass Redux-Thunk nur im Client (`useEffect`) ausgeführt wird.
- Automatische Aktualisierung der API-Daten alle 10 Sekunden über Redux-Thunk.
- Code-Optimierungen für eine stabilere Client-Side-Architektur mit Next.js.

 Jetzt läuft Redux-Thunk stabil & effizient in der Next.js-Anwendung!
2025-03-19 14:48:19 +01:00

77 lines
2.0 KiB
TypeScript

// /services/fetchLoopChartData.ts
/**
* Erstellt die richtige API-URL basierend auf Umgebung, Mode, Type und Slot-Nummer.
*/
const getApiUrl = (
mode: "DIA0" | "DIA1" | "DIA2",
type: number,
slotNumber: number,
vonDatum: string,
bisDatum: string
) => {
if (!slotNumber) {
console.error("⚠️ Slot-Nummer nicht gesetzt!");
return "";
}
const typeFolder =
type === 3 ? "isolationswiderstand" : "schleifenwiderstand";
return process.env.NODE_ENV === "development"
? `/CPLmockData/kuesChartData/slot${slotNumber}/${typeFolder}/${mode}.json`
: `${window.location.origin}/CPL?seite.ACP&${mode}=${formatDate(
vonDatum
)};${formatDate(bisDatum)};${slotNumber};${type};`;
};
/**
* Wandelt ein Datum von "YYYY-MM-DD" zu "YYYY;MM;DD" um (für die API-URL).
*/
const formatDate = (dateString: string) => {
const dateParts = dateString.split("-");
return `${dateParts[0]};${dateParts[1]};${dateParts[2]}`;
};
/**
* Holt die Messwerte vom Embedded-System oder einer JSON-Datei.
*/
export const fetchLoopChartData = async (
mode: "DIA0" | "DIA1" | "DIA2",
type: number,
slotNumber: number,
vonDatum: string,
bisDatum: string
) => {
try {
const apiUrl = getApiUrl(mode, type, slotNumber, vonDatum, bisDatum);
if (!apiUrl) {
throw new Error(
"❌ Keine gültige API-URL! in /services/fetchLoopChartdata.ts"
);
}
console.log(
`📡 Fetching data from in /services/fetchLoopChartdata.ts: ${apiUrl}`
);
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error(`❌ Fehler: ${response.status} ${response.statusText}`);
}
const data = await response.json();
console.log(
"✅ Daten erfolgreich geladen in /services/fetchLoopChartdata.ts:",
data
);
return data;
} catch (error) {
console.error(
"❌ Fehler beim Laden der Schleifenmesskurvendaten in /services/fetchLoopChartdata.ts:",
error
);
return null;
}
};