- Neuen Redux Slice `systemSettingsSlice` erstellt, um Systemdaten zentral zu verwalten. - Header-Icon für Systemeinstellungen holt jetzt Daten aus `systemSettingsSlice` statt `variablesSlice`. - Die Einstellungen-Seite (`Allgemeine Einstellungen`) wurde umgestellt und liest nun ebenfalls aus `systemSettingsSlice`. - UI-Optimierungen für die Einstellungen-Seite, um alle Eingabefelder kompakter darzustellen.
162 lines
4.3 KiB
TypeScript
162 lines
4.3 KiB
TypeScript
// redux/slices/variablesSlice.ts
|
|
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
|
import { DataTDR } from "../types/chartDataTypesTDR";
|
|
|
|
// Typ für den State
|
|
export interface VariablesState {
|
|
selectedChartData: DataTDR[] | null;
|
|
selectedFileName: string | null;
|
|
//------------
|
|
kueBezeichnungen: string[];
|
|
isolationsgrenzwerte: number[];
|
|
verzoegerung: number[];
|
|
untereSchleifenGrenzwerte: number[];
|
|
obereSchleifenGrenzwerte: number[];
|
|
schleifenintervall: number[];
|
|
//---------------
|
|
|
|
de: string | null;
|
|
counter: number | null;
|
|
flutter: string | null;
|
|
kueOnline: string[] | number[];
|
|
kueID: string[];
|
|
kueIso: string[];
|
|
kuePSTmMinus96V: number[];
|
|
kueAlarm1: number[];
|
|
kueAlarm2: number[];
|
|
kueResidence: string[];
|
|
kueCableBreak: number[];
|
|
kueGroundFault: number[];
|
|
kueLimit1: number | null;
|
|
kueLimit2Low: number | null;
|
|
kueDelay1: number | null;
|
|
kueLoopInterval: number | null;
|
|
kueVersion: number[] | string[];
|
|
tdrAtten: number | null;
|
|
tdrPulse: number | null;
|
|
tdrSpeed: number | null;
|
|
tdrAmp: number | null;
|
|
tdrTrigger: number | null;
|
|
tdrLocation: number | null;
|
|
tdrActive: boolean | null;
|
|
kueOverflow: number[] | null;
|
|
tdrLast: string | null;
|
|
appVersion: string | null;
|
|
win_analogeEingaenge1: string | null;
|
|
win_analogeEingaenge2: string | null;
|
|
win_analogeEingaenge3: string | null;
|
|
win_analogeEingaenge4: string | null;
|
|
win_analogeEingaenge5: string | null;
|
|
win_analogeEingaenge6: string | null;
|
|
win_analogeEingaenge7: string | null;
|
|
win_analogeEingaenge8: string | null;
|
|
opcUaZustand: string | null;
|
|
opcUaActiveClientCount: number | null;
|
|
opcUaNodesetName: string | null;
|
|
}
|
|
|
|
// Initialer Zustand
|
|
const initialState: VariablesState = {
|
|
selectedFileName: null,
|
|
//------------
|
|
selectedChartData: null,
|
|
kueBezeichnungen: [],
|
|
isolationsgrenzwerte: [],
|
|
verzoegerung: [],
|
|
untereSchleifenGrenzwerte: [],
|
|
obereSchleifenGrenzwerte: [],
|
|
schleifenintervall: [],
|
|
//---------------
|
|
|
|
de: null,
|
|
counter: null,
|
|
flutter: null,
|
|
kueOnline: [],
|
|
kueID: [],
|
|
kueIso: [],
|
|
kuePSTmMinus96V: [],
|
|
kueAlarm1: [],
|
|
kueAlarm2: [],
|
|
kueResidence: [],
|
|
kueCableBreak: [],
|
|
kueGroundFault: [],
|
|
kueLimit1: null,
|
|
kueLimit2Low: null,
|
|
kueDelay1: null,
|
|
kueLoopInterval: null,
|
|
kueVersion: [],
|
|
tdrAtten: null,
|
|
tdrPulse: null,
|
|
tdrSpeed: null,
|
|
tdrAmp: null,
|
|
tdrTrigger: null,
|
|
tdrLocation: null,
|
|
tdrActive: null,
|
|
kueOverflow: null,
|
|
tdrLast: null,
|
|
appVersion: null,
|
|
win_analogeEingaenge1: null,
|
|
win_analogeEingaenge2: null,
|
|
win_analogeEingaenge3: null,
|
|
win_analogeEingaenge4: null,
|
|
win_analogeEingaenge5: null,
|
|
win_analogeEingaenge6: null,
|
|
win_analogeEingaenge7: null,
|
|
win_analogeEingaenge8: null,
|
|
opcUaZustand: null,
|
|
opcUaActiveClientCount: null,
|
|
opcUaNodesetName: null,
|
|
};
|
|
|
|
// Slice erstellen
|
|
const variablesSlice = createSlice({
|
|
name: "variables",
|
|
initialState,
|
|
reducers: {
|
|
setVariable(
|
|
state,
|
|
action: PayloadAction<{
|
|
key: keyof VariablesState;
|
|
value: VariablesState[keyof VariablesState];
|
|
}>
|
|
) {
|
|
const { key, value } = action.payload;
|
|
(state[key] as VariablesState[keyof VariablesState]) = value;
|
|
},
|
|
setVariables(state, action: PayloadAction<Partial<VariablesState>>) {
|
|
//console.log("setVariables aufgerufen mit:", action.payload);
|
|
Object.entries(action.payload).forEach(([key, value]) => {
|
|
(state[
|
|
key as keyof VariablesState
|
|
] as VariablesState[keyof VariablesState]) = value!;
|
|
});
|
|
},
|
|
setSelectedChartData(state, action: PayloadAction<DataTDR[] | null>) {
|
|
state.selectedChartData = action.payload;
|
|
},
|
|
setSelectedFileName(state, action: PayloadAction<string | null>) {
|
|
state.selectedFileName = action.payload;
|
|
},
|
|
setOpcUaZustand(state, action: PayloadAction<string | null>) {
|
|
state.opcUaZustand = action.payload;
|
|
},
|
|
setOpcUaActiveClientCount(state, action: PayloadAction<number | null>) {
|
|
state.opcUaActiveClientCount = action.payload;
|
|
},
|
|
setOpcUaNodesetName(state, action: PayloadAction<string | null>) {
|
|
state.opcUaNodesetName = action.payload;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const {
|
|
setVariable,
|
|
setVariables,
|
|
setSelectedChartData,
|
|
setSelectedFileName,
|
|
setOpcUaZustand,
|
|
setOpcUaActiveClientCount,
|
|
setOpcUaNodesetName,
|
|
} = variablesSlice.actions;
|
|
export default variablesSlice.reducer;
|