124 lines
3.3 KiB
TypeScript
124 lines
3.3 KiB
TypeScript
// 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[]; // 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(
|
|
setKueData({
|
|
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;
|