+
+ {/* Responsive Grid: 1 Spalte auf mobilen Geräten, 2 Spalten auf größeren Geräten */}
+
+ {/* Tabelle als Card */}
+
+
+ Analoge Eingänge
+
+
+
-
-
Diagramm
-
Diagramm wird hier eingefügt
+ {/* Diagramm als Card */}
+
+
+ Analog Inputs Chart
+
+
+
- {/*
-
-
setActiveConfig(id)}
- />
-
- setActiveConfig(id)}
- />
- */}
);
diff --git a/public/CPLmockData/SERVICE/ae.js b/public/CPLmockData/SERVICE/ae.js
index e69de29..8942ad8 100644
--- a/public/CPLmockData/SERVICE/ae.js
+++ b/public/CPLmockData/SERVICE/ae.js
@@ -0,0 +1,19 @@
+// public/CPLmockData/SERVICE/ae.js
+var win_analogeEingaenge1 = [1, 0, "----", 1, 1, 0, 1]; // Eingang 1
+var win_analogeEingaenge2 = [2, 22.91, "Feuchtigkeit", 1, 1, 1, 0]; // Eingang 2
+var win_analogeEingaenge3 = [3, 0, "----", 1, 1, 0, 1]; // Eingang 3
+var win_analogeEingaenge4 = [4, 0, "----", 1, 1, 0, 1]; // Eingang 4
+var win_analogeEingaenge5 = [5, 0, "----", 1, 1, 0, 1]; // Eingang 5
+var win_analogeEingaenge6 = [6, 21, "Temperatur", 1, 1, 0, 1]; // Eingang 6
+var win_analogeEingaenge7 = [7, 0, "----", 1, 1, 1, 0]; // Eingang 7
+var win_analogeEingaenge8 = [8, 0, "----", 1, 1, 0, 1]; // Eingang 8
+
+/*
+ID (z. B. 1, 2, ... 8) → Identifikation des Eingangs
+Wert (z. B. 0, 22.91, 21) → Der analoge Wert
+Bezeichnung (z. B. "----", "Feuchtigkeit", "Temperatur") → Name des Sensors
+uW (Unterer Warnwert) → 1 = grün, 0 = grau
+uG (Unterer Grenzwert) → 1 = grün, 0 = grau
+oW (Oberer Warnwert) → 1 = orange, 0 = grau
+oG (Oberer Grenzwert) → 1 = grün, 0 = grau
+*/
diff --git a/redux/slices/analogeEingaengeSlice.ts b/redux/slices/analogeEingaengeSlice.ts
new file mode 100644
index 0000000..c45a0bb
--- /dev/null
+++ b/redux/slices/analogeEingaengeSlice.ts
@@ -0,0 +1,110 @@
+// redux/slices/analogeEingaengeSlice.ts
+import { createSlice, PayloadAction, createAsyncThunk } from "@reduxjs/toolkit";
+
+// Typ für einen einzelnen analogen Eingang
+export interface AnalogerEingang {
+ id: number | null;
+ value: number | null;
+ name: string;
+ uW: boolean;
+ uG: boolean;
+ oW: boolean;
+ oG: boolean;
+}
+
+// Typ für den Gesamt-State
+export interface AnalogeEingaengeState {
+ win_analogeEingaenge1: AnalogerEingang;
+ win_analogeEingaenge2: AnalogerEingang;
+ win_analogeEingaenge3: AnalogerEingang;
+ win_analogeEingaenge4: AnalogerEingang;
+ win_analogeEingaenge5: AnalogerEingang;
+ win_analogeEingaenge6: AnalogerEingang;
+ win_analogeEingaenge7: AnalogerEingang;
+ win_analogeEingaenge8: AnalogerEingang;
+}
+
+// Standardwert für einen Eingang
+const defaultAnalogerEingang: AnalogerEingang = {
+ id: null,
+ value: null,
+ name: "",
+ uW: false,
+ uG: false,
+ oW: false,
+ oG: false,
+};
+
+// Initialer Zustand mit leeren Werten
+const initialState: AnalogeEingaengeState = {
+ win_analogeEingaenge1: { ...defaultAnalogerEingang },
+ win_analogeEingaenge2: { ...defaultAnalogerEingang },
+ win_analogeEingaenge3: { ...defaultAnalogerEingang },
+ win_analogeEingaenge4: { ...defaultAnalogerEingang },
+ win_analogeEingaenge5: { ...defaultAnalogerEingang },
+ win_analogeEingaenge6: { ...defaultAnalogerEingang },
+ win_analogeEingaenge7: { ...defaultAnalogerEingang },
+ win_analogeEingaenge8: { ...defaultAnalogerEingang },
+};
+
+// Mock-Daten aus `window` laden
+export const loadFromWindow = createAsyncThunk(
+ "analogeEingaenge/loadFromWindow",
+ async () => {
+ const entries = Object.entries(window).filter(([key]) =>
+ key.startsWith("win_analogeEingaenge")
+ );
+
+ const data: Partial
= {};
+
+ entries.forEach(([key, value]) => {
+ if (Array.isArray(value) && value.length === 7) {
+ data[key as keyof AnalogeEingaengeState] = {
+ id: value[0],
+ value: value[1],
+ name: value[2],
+ uW: value[3] === 1,
+ uG: value[4] === 1,
+ oW: value[5] === 1,
+ oG: value[6] === 1,
+ };
+ }
+ });
+
+ return data;
+ }
+);
+
+// Redux Slice
+const analogeEingaengeSlice = createSlice({
+ name: "analogeEingaenge",
+ initialState,
+ reducers: {
+ setAnalogerEingang(
+ state,
+ action: PayloadAction<{
+ key: keyof AnalogeEingaengeState;
+ value: AnalogerEingang;
+ }>
+ ) {
+ state[action.payload.key] = action.payload.value;
+ },
+ resetAnalogeEingaenge(state) {
+ Object.keys(state).forEach((key) => {
+ state[key as keyof AnalogeEingaengeState] = {
+ ...defaultAnalogerEingang,
+ };
+ });
+ },
+ },
+ extraReducers: (builder) => {
+ builder.addCase(loadFromWindow.fulfilled, (state, action) => {
+ Object.assign(state, action.payload);
+ });
+ },
+});
+
+export const { setAnalogerEingang, resetAnalogeEingaenge } =
+ analogeEingaengeSlice.actions;
+
+export default analogeEingaengeSlice.reducer;
diff --git a/redux/slices/variablesSlice.ts b/redux/slices/variablesSlice.ts
index 6ac29b1..51db3b1 100644
--- a/redux/slices/variablesSlice.ts
+++ b/redux/slices/variablesSlice.ts
@@ -1,12 +1,8 @@
// 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[];
@@ -40,20 +36,10 @@ export interface VariablesState {
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;
}
// Initialer Zustand
const initialState: VariablesState = {
- selectedFileName: null,
- selectedChartData: null,
kueBezeichnungen: [],
isolationsgrenzwerte: [],
verzoegerung: [],
@@ -86,14 +72,6 @@ const initialState: VariablesState = {
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,
};
// Slice erstellen
@@ -118,20 +96,9 @@ const variablesSlice = createSlice({
] as VariablesState[keyof VariablesState]) = value!;
});
},
- setSelectedChartData(state, action: PayloadAction) {
- state.selectedChartData = action.payload;
- },
- setSelectedFileName(state, action: PayloadAction) {
- state.selectedFileName = action.payload;
- },
},
});
-export const {
- setVariable,
- setVariables,
- setSelectedChartData,
- setSelectedFileName,
-} = variablesSlice.actions;
+export const { setVariable, setVariables } = variablesSlice.actions;
export default variablesSlice.reducer;
diff --git a/redux/store.ts b/redux/store.ts
index eb04342..ae691df 100644
--- a/redux/store.ts
+++ b/redux/store.ts
@@ -10,6 +10,7 @@ import dashboardReducer from "./slices/dashboardSlice";
import systemSettingsReducer from "./slices/systemSettingsSlice";
import opcuaSettingsReducer from "./slices/opcuaSettingsSlice";
import digitalOutputsReducer from "./slices/digitalOutputsSlice";
+import analogeEingaengeReducer from "./slices/analogeEingaengeSlice";
const store = configureStore({
reducer: {
@@ -23,6 +24,7 @@ const store = configureStore({
systemSettings: systemSettingsReducer,
opcuaSettings: opcuaSettingsReducer,
digitalOutputs: digitalOutputsReducer,
+ analogeEingaenge: analogeEingaengeReducer,
},
});