Files
CPLv4.0/redux/slices/digitalInputsSlice.ts

75 lines
1.8 KiB
TypeScript

// /redux/slices/digitalInputsSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface DigitalInput {
id: number;
label: string;
status: boolean;
counter: number;
flutter: number;
invertierung: boolean;
filterzeit: number;
gewichtung: number;
zaehlerAktiv: boolean;
eingangOffline: boolean;
name: string;
}
interface DigitalInputsState {
inputs: DigitalInput[];
}
const initialState: DigitalInputsState = {
inputs: [],
};
const digitalInputsSlice = createSlice({
name: "digitalInputsSlice",
initialState,
reducers: {
setInputs: (state, action: PayloadAction<DigitalInput[]>) => {
state.inputs = action.payload;
},
updateInputStatus: (
state,
action: PayloadAction<{ id: number; status: boolean }>
) => {
const { id, status } = action.payload;
const input = state.inputs.find((input) => input.id === id);
if (input) {
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;
}
},
updateName: (
state,
action: PayloadAction<{ id: number; name: string }>
) => {
const { id, name } = action.payload;
const input = state.inputs.find((input) => input.id === id);
if (input) {
input.name = name;
input.label = name; // falls du label mit aktualisieren willst
}
},
},
});
export const {
setInputs,
updateInputStatus,
updateInvertierung,
updateName, // <- hinzufügen
} = digitalInputsSlice.actions;
export default digitalInputsSlice.reducer;