Files
CPLv4.0/services/fetchLoopChartData.ts
Ismail Ali 8e482813f8 fix: Dynamische Initialisierung von "vonDatum" und "bisDatum" im Redux-Store
- vonDatum auf „heute minus 30 Tage“ gesetzt (statt festem Datum).
- bisDatum auf heutiges Datum gesetzt.
- Behebt Initialisierungsproblem im DateRangePicker.
2025-03-23 11:14:38 +01:00

82 lines
2.1 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 "";
}
// type: 3 → Isolationswiderstand
// type: 4 → Schleifenwiderstand
const typeFolder =
type === 3
? "isolationswiderstand"
: type === 4
? "schleifenwiderstand"
: "unbekannterTyp";
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;
}
};