// components/modales/kueModal/handlers/handleSave.ts import { setVariables } from "../../../../store/variablesSlice"; export interface OriginalValues { kueID: string[]; kueBezeichnungen: string[]; isolationsgrenzwerte: number[]; verzoegerung: number[]; untereSchleifenGrenzwerte: number[]; obereSchleifenGrenzwerte: number[]; schleifenintervall: number[]; } interface HandleSaveParams { ids: string[]; // kueID im Redux-Slice bezeichnungen: string[]; // kueBezeichnungen im Redux-Slice isolationsgrenzwerte: number[]; verzoegerung: number[]; untereSchleifenGrenzwerte: number[]; obereSchleifenGrenzwerte: number[]; schleifenintervall: number[]; originalValues: OriginalValues; slot: number; dispatch: (action: any) => void; onModulNameChange: (id: string) => void; onClose: () => void; } const handleSave = ({ ids, bezeichnungen, isolationsgrenzwerte, verzoegerung, untereSchleifenGrenzwerte, obereSchleifenGrenzwerte, schleifenintervall, originalValues, slot, dispatch, onModulNameChange, onClose, }: HandleSaveParams): void => { const changes: Partial<{ KID: string; KIA: string; KL_: number; KD_: number; KR_: number; KRO_: number; KRI: number; }> = {}; if (ids[slot] !== originalValues.kueID[slot]) { changes.KID = ids[slot]; } if (bezeichnungen[slot] !== originalValues.kueBezeichnungen[slot]) { changes.KIA = bezeichnungen[slot]; } if ( isolationsgrenzwerte[slot] !== originalValues.isolationsgrenzwerte[slot] ) { changes.KL_ = isolationsgrenzwerte[slot]; } if (verzoegerung[slot] !== originalValues.verzoegerung[slot]) { changes.KD_ = verzoegerung[slot]; } if ( untereSchleifenGrenzwerte[slot] !== originalValues.untereSchleifenGrenzwerte[slot] ) { changes.KR_ = untereSchleifenGrenzwerte[slot]; } if ( obereSchleifenGrenzwerte[slot] !== originalValues.obereSchleifenGrenzwerte[slot] ) { changes.KRO_ = obereSchleifenGrenzwerte[slot]; } if (schleifenintervall[slot] !== originalValues.schleifenintervall[slot]) { changes.KRI = schleifenintervall[slot]; } if (Object.keys(changes).length > 0) { let url = `/cpl?/kabelueberwachung.html&slot=${slot}`; Object.entries(changes).forEach(([paramKey, paramValue]) => { if (paramValue !== undefined) { url += `&${paramKey}${slot}=${encodeURIComponent(paramValue)}`; } }); fetch(url, { method: "GET" }) .then((response) => { if (response.ok) { alert("Daten erfolgreich gespeichert!"); onModulNameChange(ids[slot]); dispatch( setVariables({ kueID: [...ids], kueBezeichnungen: [...bezeichnungen], isolationsgrenzwerte: [...isolationsgrenzwerte], verzoegerung: [...verzoegerung], untereSchleifenGrenzwerte: [...untereSchleifenGrenzwerte], obereSchleifenGrenzwerte: [...obereSchleifenGrenzwerte], schleifenintervall: [...schleifenintervall], }) ); } else { alert("Fehler beim Speichern der Daten!"); } }) .catch((error) => { console.error("Fehler:", error); alert("Fehler beim Senden der Daten!"); }); } else { alert("Keine Änderungen vorgenommen."); } onClose(); }; export default handleSave;