Files
CPLv4.0/redux/slices/kabelueberwachungChartSlice.ts
ISA 8c638acfc7 feat: Dynamische Einheit in Redux für Schleifen- und Isolationswiderstand hinzugefügt
- Redux-Slice erweitert um `unit`-State (kOhm/MOhm)
- `setSelectedSlotType` aktualisiert die Einheit basierend auf der Auswahl
- Dropdown in `LoopChartActionBar.tsx` angepasst, um Einheit zu setzen
- Y-Achse und Tooltip in `LoopMeasurementChart.tsx` zeigen dynamisch die Einheit aus Redux
- Initialwert von `bisDatum` auf das heutige Datum gesetzt
2025-03-14 08:49:28 +01:00

107 lines
3.4 KiB
TypeScript

// redux/slices/kabelueberwachungChartSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
// Definition des Interface für den Zustand des TDR-Charts
interface TDRData {
timestamp: string;
tdr: number;
}
// Definition des Interface für den gesamten Zustand der Kabelüberwachung
interface KabelueberwachungChartState {
loopMeasurementCurveChartData: any[];
vonDatum: string;
bisDatum: string;
selectedMode: "DIA0" | "DIA1" | "DIA2";
selectedSlotType: "isolationswiderstand" | "schleifenwiderstand";
isChartOpen: boolean;
slotNumber: number | null;
tdrChartData: TDRData[]; // Hinzufügen des TDR-Datenzustands
isFullScreen: boolean;
unit: "kOhm" | "MOhm"; // 🆕 Einheit für Messwerte
}
// Initialer Zustand des Slices
const initialState: KabelueberwachungChartState = {
loopMeasurementCurveChartData: [],
vonDatum: "2025-02-01",
bisDatum: new Date().toISOString().split("T")[0], // Heutiges Datum als Standardwert
selectedMode: "DIA0",
selectedSlotType: "schleifenwiderstand",
isChartOpen: false,
slotNumber: null,
tdrChartData: [], // Initialisierung mit leerem Array
isFullScreen: false,
unit: "kOhm", // Standard auf Schleifenwiderstand (kOhm)
};
// Erstellung des Slices
const kabelueberwachungChartSlice = createSlice({
name: "kabelueberwachungChart",
initialState,
reducers: {
// Aktion zum Setzen der Slot-Nummer
setSlotNumber: (state, action: PayloadAction<number | null>) => {
state.slotNumber = action.payload;
},
// Aktion zum Setzen der Schleifenmesskurven-Daten
setLoopMeasurementCurveChartData: (state, action: PayloadAction<any[]>) => {
state.loopMeasurementCurveChartData = action.payload;
},
// Aktion zum Setzen des Startdatums
setVonDatum: (state, action: PayloadAction<string>) => {
state.vonDatum = action.payload; // **Kein replace mehr**
},
// Aktion zum Setzen des Enddatums
setBisDatum: (state, action: PayloadAction<string>) => {
state.bisDatum = action.payload; // **Kein replace mehr**
},
// Aktion zum Setzen des ausgewählten Modus
setSelectedMode: (
state,
action: PayloadAction<"DIA0" | "DIA1" | "DIA2">
) => {
state.selectedMode = action.payload;
},
// Aktion zum Setzen des ausgewählten Slot-Typs
setSelectedSlotType: (
state,
action: PayloadAction<"isolationswiderstand" | "schleifenwiderstand">
) => {
state.selectedSlotType = action.payload;
state.unit = action.payload === "schleifenwiderstand" ? "kOhm" : "MOhm"; // 🆕 Einheit setzen
},
// Aktion zum Öffnen oder Schließen des Charts
setChartOpen: (state, action: PayloadAction<boolean>) => {
state.isChartOpen = action.payload;
},
// Aktion zum Setzen der TDR-Charts-Daten
setTDRChartData: (
state,
action: PayloadAction<{ timestamp: string; tdr: number }[]>
) => {
state.tdrChartData = action.payload;
},
setFullScreen: (state, action: PayloadAction<boolean>) => {
state.isFullScreen = action.payload; // **⬅️ Neue Action für Fullscreen**
},
},
});
// Export der Aktionen
export const {
setSlotNumber,
setLoopMeasurementCurveChartData,
setVonDatum,
setBisDatum,
setSelectedMode,
setSelectedSlotType,
setChartOpen,
setTDRChartData,
setFullScreen,
} = kabelueberwachungChartSlice.actions;
// Export des Reducers
export default kabelueberwachungChartSlice.reducer;