51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
// 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;
|