feat: lokale Speicherung der Referenzkurve per localStorage implementiert

- Aktuelle Messkurve wird bei Klick auf „Als Referenzkurve setzen“ in localStorage gespeichert
- fetchTDRReferenceCurve lädt zuerst aus localStorage, dann aus Datei/Produktion
- Ermöglicht Setzen und Testen von Referenzkurven in der Entwicklungsumgebung ohne Backend
This commit is contained in:
Ismail Ali
2025-03-30 20:22:48 +02:00
parent cb2deecf17
commit 826977c9c7
4 changed files with 23 additions and 20 deletions

View File

@@ -22,7 +22,11 @@ const TDRChartActionBar: React.FC = () => {
const idsForSlot =
selectedSlot !== null ? tdmChartData[selectedSlot] ?? [] : [];
const tdrDataById = useSelector(
(state: RootState) => state.tdrDataById.dataById
);
const [selectedId, setSelectedId] = useState<number | null>(null);
const currentChartData = selectedId !== null ? tdrDataById[selectedId] : [];
// 🔄 Dropdown-Auswahl: neue Messung laden
const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
@@ -32,19 +36,15 @@ const TDRChartActionBar: React.FC = () => {
};
// 📌 Referenz setzen (nutzt Slotnummer + 1 für die API)
const handleSetReference = async () => {
if (selectedId === null || selectedSlot === null) return;
const handleSetReference = () => {
if (selectedSlot === null || !currentChartData?.length) return;
const apiSlot = selectedSlot + 1;
const url = `${window.location.origin}/CPL?seite.ACP&KTR${apiSlot}=${selectedId}`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error("Fehler beim Setzen der Referenzkurve");
alert("✅ Referenzkurve erfolgreich gesetzt.");
} catch (error) {
console.error("❌ Fehler:", error);
alert("❌ Referenzkurve konnte nicht gesetzt werden.");
}
localStorage.setItem(
`ref-curve-slot${selectedSlot}`,
JSON.stringify(currentChartData)
);
alert("✅ Referenzkurve lokal gespeichert (nur im Browser)");
};
// 📥 Beim Slot-Wechsel TDM-Liste + letzte ID laden

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/
const webVersion = "1.6.186";
const webVersion = "1.6.187";
export default webVersion;

View File

@@ -1,4 +1,4 @@
// /redux/thunks/fetchAllTDRReferenceChartThunk.ts
// /redux/thunks/fetchReferenceCurveBySlotThunk.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import { fetchTDRReferenceCurve } from "../../services/fetchTDRReferenceCurve";

View File

@@ -1,11 +1,17 @@
// /services/fetchTDRReferenceCurve.ts
export const fetchTDRReferenceCurve = async (
slot: number
): Promise<any[] | null> => {
if (typeof window === "undefined") return null;
// ✅ Erst aus localStorage lesen
const local = localStorage.getItem(`ref-curve-slot${slot}`);
if (local) {
console.log(`📦 Lade Referenzkurve für Slot ${slot} aus localStorage`);
return JSON.parse(local);
}
// 🔁 Fallback: Datei oder Produktion-API
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
const url = isDev
? `/CPLmockData/tdr-reference-curves/slot${slot}.json`
: `${window.location.origin}/CPL?Service/empty.acp&TDRR=${slot}`;
@@ -15,10 +21,7 @@ export const fetchTDRReferenceCurve = async (
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return await res.json();
} catch (error) {
console.error(
`❌ Fehler beim Laden der Referenzkurve für Slot ${slot}:`,
error
);
console.error(`❌ Fehler beim Laden von Slot ${slot}:`, error);
return null;
}
};