digitale Eingänge Redux Slice erstellt für mehr Übersicht
This commit is contained in:
50
redux/slices/digitalInputsSlice.ts
Normal file
50
redux/slices/digitalInputsSlice.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
// slices/digitalInputsSlice.ts
|
||||
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
||||
|
||||
interface DigitalInput {
|
||||
id: number;
|
||||
label: string;
|
||||
status: boolean;
|
||||
}
|
||||
|
||||
interface DigitalInputsState {
|
||||
inputs: DigitalInput[];
|
||||
}
|
||||
|
||||
const initialState: DigitalInputsState = {
|
||||
inputs: [], // Initial leerer Zustand
|
||||
};
|
||||
|
||||
const digitalInputsSlice = createSlice({
|
||||
name: "digitalInputs",
|
||||
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;
|
||||
}
|
||||
},
|
||||
updateInputLabel: (
|
||||
state,
|
||||
action: PayloadAction<{ id: number; label: string }>
|
||||
) => {
|
||||
const { id, label } = action.payload;
|
||||
const input = state.inputs.find((input) => input.id === id);
|
||||
if (input) {
|
||||
input.label = label;
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { setInputs, updateInputStatus, updateInputLabel } =
|
||||
digitalInputsSlice.actions;
|
||||
export default digitalInputsSlice.reducer;
|
||||
Reference in New Issue
Block a user