// components/modales/kueModal/handlers/handleSave.ts import { setKueData } from "../../../../../redux/slices/kueDataSlice"; export interface OriginalValues { kueID: string[]; kueBezeichnungen: string[]; isolationsgrenzwerte: number[]; verzoegerung: number[]; untereSchleifenGrenzwerte: number[]; obereSchleifenGrenzwerte: number[]; schleifenintervall: number[]; } interface HandleSaveParams { ids: string[]; bezeichnungen: string[]; 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 = async ({ ids, bezeichnungen, isolationsgrenzwerte, verzoegerung, untereSchleifenGrenzwerte, obereSchleifenGrenzwerte, schleifenintervall, originalValues, slot, dispatch, onModulNameChange, onClose, }: HandleSaveParams): Promise => { 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) { const isDev = window.location.hostname === "localhost"; if (isDev) { await fetch("/api/cpl/updateKueDataAPIHandler", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ slot, changes: { win_kueID: ids[slot], win_kueLimit1: isolationsgrenzwerte[slot], win_kueDelay1: verzoegerung[slot], win_kueLimit2Low: untereSchleifenGrenzwerte[slot], win_kueLimit2High: obereSchleifenGrenzwerte[slot], win_kueLoopInterval: schleifenintervall[slot], }, }), }); } else { let url = `/cpl?/kabelueberwachung.html&slot=${slot}`; Object.entries(changes).forEach(([paramKey, paramValue]) => { if (paramValue !== undefined) { url += `&${paramKey}${slot}=${encodeURIComponent(paramValue)}`; } }); const response = await fetch(url, { method: "GET" }); if (!response.ok) { alert("Fehler beim Speichern der Daten!"); return; } } alert("Daten erfolgreich gespeichert!"); onModulNameChange(ids[slot]); dispatch( setKueData({ kueID: [...ids], kueBezeichnungen: [...bezeichnungen], isolationsgrenzwerte: [...isolationsgrenzwerte], verzoegerung: [...verzoegerung], untereSchleifenGrenzwerte: [...untereSchleifenGrenzwerte], obereSchleifenGrenzwerte: [...obereSchleifenGrenzwerte], schleifenintervall: [...schleifenintervall], }) ); } else { alert("Keine Änderungen vorgenommen."); } onClose(); }; export default handleSave;