diff --git a/components/main/einausgaenge/DigitalInputs.tsx b/components/main/einausgaenge/DigitalInputs.tsx
index 4753e57..02e72a8 100644
--- a/components/main/einausgaenge/DigitalInputs.tsx
+++ b/components/main/einausgaenge/DigitalInputs.tsx
@@ -43,11 +43,12 @@ export default function DigitalInputs({ openInputModal, inputRange }: Props) {
{input.status ? (
- ●
- ) : (
✕
+ ) : (
+ ●
)}
|
+
{input.label} |
+ state.digitalInputsSlice.inputs.find(
+ (input) => input.id === Number(selectedInput.id)
+ )
+ );
+
+ const [invertiert, setInvertiert] = useState(false);
+ const isDev = process.env.NODE_ENV === "development";
+
+ useEffect(() => {
+ if (selectedInput) {
+ if (isDev) {
+ const saved = localStorage.getItem(`invertierung_${selectedInput.id}`);
+ if (saved !== null) {
+ setInvertiert(parseInt(saved) === 1);
+ } else {
+ setInvertiert(selectedInput.invertierung);
+ }
+ } else {
+ setInvertiert(selectedInput.invertierung);
+ }
+ }
+ }, [selectedInput, isDev]);
+
if (!isOpen || !selectedInput) return null;
+ const handleInvertierungToggle = async () => {
+ const neueInvertierung = !invertiert;
+
+ if (process.env.NODE_ENV === "development") {
+ dispatch(
+ updateInvertierung({
+ id: Number(selectedInput.id),
+ invertierung: neueInvertierung,
+ })
+ );
+
+ setInvertiert(neueInvertierung);
+ } else {
+ const url = `/CPL?/CPL/SERVICE/empty.acp&DEI${selectedInput.id}=${
+ neueInvertierung ? 1 : 0
+ }`;
+ try {
+ const response = await fetch(url);
+ if (!response.ok) throw new Error("Fehler beim Senden der Anfrage");
+
+ dispatch(
+ updateInvertierung({
+ id: Number(selectedInput.id),
+ invertierung: neueInvertierung,
+ })
+ );
+ setInvertiert(neueInvertierung);
+ } catch (error) {
+ console.error("Invertierung fehlgeschlagen:", error);
+ alert("Invertierung konnte nicht geändert werden.");
+ }
+ }
+ };
+ //---------------------------------
+
+ useEffect(() => {
+ if (reduxInput) {
+ setInvertiert(reduxInput.invertierung);
+ }
+ }, [reduxInput]);
+
+ //---------------------------------
return (
-
+
Details für Eingang {selectedInput.id}
Status:
- {selectedInput.status === "active" ? "Aktiv" : "Inaktiv"}
+
+ Status:
+
+
+ {reduxInput?.status ? "Inaktiv" : "Aktiv"}
+
Beschreibung:
@@ -26,10 +104,16 @@ export default function InputModal({ selectedInput, closeInputModal, isOpen }) {
{selectedInput.name}
-
+
Invertierung:
+ {invertiert ? "Ein" : "Aus"}
+
- {selectedInput.invertierung ? "Ein" : "Aus"}
Filterzeit:
@@ -56,9 +140,10 @@ export default function InputModal({ selectedInput, closeInputModal, isOpen }) {
{selectedInput.eingangOffline ? "Offline" : "Online"}
+
diff --git a/config/webVersion.ts b/config/webVersion.ts
index 5b92307..e010e91 100644
--- a/config/webVersion.ts
+++ b/config/webVersion.ts
@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/
-const webVersion = "1.6.208";
+const webVersion = "1.6.209";
export default webVersion;
diff --git a/public/CPL/SERVICE/de.js b/public/CPL/SERVICE/de.js
index 09d6d67..5b70fea 100644
--- a/public/CPL/SERVICE/de.js
+++ b/public/CPL/SERVICE/de.js
@@ -32,4 +32,9 @@ var de=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var counter=[0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000];
var flutter=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
+var de=[1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
+var counter=[0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000];
+var flutter=[0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000];
+
+
*/
\ No newline at end of file
diff --git a/public/CPLmockData/SERVICE/de.js b/public/CPLmockData/SERVICE/de.js
index bf33d38..e29eed4 100644
--- a/public/CPLmockData/SERVICE/de.js
+++ b/public/CPLmockData/SERVICE/de.js
@@ -1,8 +1,23 @@
// public/CPLmockData/SERVICE/de.js
var win_de_state = [
+ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+];
+// Invertierung -> DEIxx xx = Nr Eingang 1-32
+
+var win_de_invert = [
1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
+/*
+✅ Logik für Farbe abhängig von Status + Invertierung:
+Anzeige ist rot wenn Status=1 ist. Die Farbe ist nicht abhängig von der Invertierung.
+Status Invertierung Anzeige
+1 1 🔴 rot
+1 0 🔴 rot
+0 1 ✅ grün
+0 0 ✅ grün
+*/
var win_de_label = [
"DE1",
"DE2",
diff --git a/redux/slices/digitalInputsSlice.ts b/redux/slices/digitalInputsSlice.ts
index 70c88d6..4367d9c 100644
--- a/redux/slices/digitalInputsSlice.ts
+++ b/redux/slices/digitalInputsSlice.ts
@@ -7,6 +7,7 @@ interface DigitalInput {
status: boolean;
counter: number;
flutter: number;
+ invertierung: boolean;
}
interface DigitalInputsState {
@@ -34,8 +35,19 @@ const digitalInputsSlice = createSlice({
input.status = status;
}
},
+ updateInvertierung: (
+ state,
+ action: PayloadAction<{ id: number; invertierung: boolean }>
+ ) => {
+ const { id, invertierung } = action.payload;
+ const input = state.inputs.find((input) => input.id === id);
+ if (input) {
+ input.invertierung = invertierung;
+ }
+ },
},
});
-export const { setInputs, updateInputStatus } = digitalInputsSlice.actions;
+export const { setInputs, updateInputStatus, updateInvertierung } =
+ digitalInputsSlice.actions;
export default digitalInputsSlice.reducer;
diff --git a/services/fetchDigitaleEingaenge.ts b/services/fetchDigitaleEingaenge.ts
index 1ad85e7..4c27a3e 100644
--- a/services/fetchDigitaleEingaenge.ts
+++ b/services/fetchDigitaleEingaenge.ts
@@ -33,6 +33,7 @@ export const fetchDigitaleEingaenge = async () => {
status: status === 1,
counter: win.win_counter?.[index] || 0,
flutter: win.win_flutter?.[index] || 0,
+ invertierung: win.win_de_invert?.[index] === 1,
})
);
|