// ✅ Slice: /redux/slices/kueDataSlice.ts
import { createSlice, PayloadAction } from "@reduxjs/toolkit";

interface KueDataState {
  //---------------------
  kueBezeichnungen: string[];
  isolationsgrenzwerte: number[];
  verzoegerung: number[];
  untereSchleifenGrenzwerte: number[];
  obereSchleifenGrenzwerte: number[];
  schleifenintervall: number[];
  //---------------
  counter: number | null;
  flutter: string | null;
  //-----------------------
  //-----------------------
  kueOnline: number[];
  kueID: string[];
  kueName: string[];
  kuePSTmMinus96V: number[];
  kueAlarm1: number[];
  kueAlarm2: number[];
  kueIso: number[];
  kueResidence: number[];
  kueCableBreak: number[];
  kueGroundFault: number[];
  kueLimit1: number[];
  kueLimit2Low: number[];
  kueDelay1: number[];
  kueLoopInterval: number[];
  kueVersion: number[];
  kueOverflow: number[];

  tdrAtten: number[];
  tdrPulse: number[];
  tdrSpeed: number[];
  tdrAmp: number[];
  tdrTrigger: number[];
  tdrLocation: number[];
  tdrActive: number[];
  tdrLast: string[];
  tdrOverflow: number[];
  kueLimit2High: number[];
  memoryInterval: number[];
  // Fallsensors
  win_fallSensorsActive: number[];
  // KVZ System - 32 Slots mit je 4 LEDs
  kvzPresence: number[]; // 32 Werte: 1 = KVZ vorhanden, 0 = nicht vorhanden
  kvzActive: number[]; // 32 Werte: 1 = KVZ aktiviert, 0 = deaktiviert
  kvzStatus: number[]; // 128 Werte: 4 LEDs pro Slot (32 * 4)
}

const initialState: KueDataState = {
  //---------------------
  kueBezeichnungen: [],
  isolationsgrenzwerte: [],
  verzoegerung: [],
  untereSchleifenGrenzwerte: [],
  obereSchleifenGrenzwerte: [],
  schleifenintervall: [],
  //---------------
  counter: null,
  flutter: null,
  //-----------------------
  //-----------------------
  kueOnline: [],
  kueID: [],
  kueName: [],
  kuePSTmMinus96V: [],
  kueAlarm1: [],
  kueAlarm2: [],
  kueIso: [],
  kueResidence: [],
  kueCableBreak: [],
  kueGroundFault: [],
  kueLimit1: [],
  kueLimit2Low: [],
  kueDelay1: [],
  kueLoopInterval: [],
  kueVersion: [],
  kueOverflow: [],

  tdrAtten: [],
  tdrPulse: [],
  tdrSpeed: [],
  tdrAmp: [],
  tdrTrigger: [],
  tdrLocation: [],
  tdrActive: [],
  tdrLast: [],
  tdrOverflow: [],
  kueLimit2High: [],
  memoryInterval: [],
  // Fallsensors
  win_fallSensorsActive: [], // Fallsensors aktiv
  // KVZ System - 32 Slots mit je 4 LEDs
  kvzPresence: new Array(32).fill(0), // 32 Slots: 1 = KVZ vorhanden, 0 = nicht vorhanden
  kvzActive: new Array(32).fill(0), // 32 Slots: 1 = KVZ aktiviert, 0 = deaktiviert
  kvzStatus: new Array(128).fill(0), // 128 LEDs: 4 LEDs pro Slot (32 * 4)
};

const kueDataSlice = createSlice({
  name: "kueDataSlice",
  initialState,
  reducers: {
    setKueData: (state, action: PayloadAction<Partial<KueDataState>>) => {
      return { ...state, ...action.payload };
    },
  },
});

export const { setKueData } = kueDataSlice.actions;
export default kueDataSlice.reducer;
