feat: handleSave final auf API-Handler für Development erweitert

- Änderungen in Dev-Umgebung werden per /api/cpl/updateKueDataAPIHandler gespeichert
- Production weiterhin GET-Request mit Parametern
- Fehlerbehandlung optimiert
This commit is contained in:
Ismail Ali
2025-04-16 00:35:22 +02:00
parent 0b61418468
commit 49ccf1da5d
4 changed files with 110 additions and 35 deletions

View File

@@ -0,0 +1,7 @@
window.win_kueID = ["FTZ_2","B23","Kabel 3","Kabel 4","Kabel 5","Kabel 6","FTZ4562","Kabel 8","12344","Kabel 10","Kabel 11","Kabel 12","Kabel 13","Kabel 14","Kabel 15","H56-77","Kabel 17","Kabel 18","Kabel 19","Kabel 20","Kabel 21","Kabel 22","Kabel 23","Kabel 24","Kabel 25","Kabel 26","Kabel 27","Kabel 28","Kabel 29","Kabel 30","Kabel 31","Kabel 32"];
window.win_kuePSTmMinus96V = ["FTZ_2","B23","Kabel 3","Kabel 4","Kabel 5","Kabel 6","FTZ4562","Kabel 8","12344","Kabel 10","Kabel 11","Kabel 12","Kabel 13","Kabel 14","Kabel 15","H56-77","Kabel 17","Kabel 18","Kabel 19","Kabel 20","Kabel 21","Kabel 22","Kabel 23","Kabel 24","Kabel 25","Kabel 26","Kabel 27","Kabel 28","Kabel 29","Kabel 30","Kabel 31","Kabel 32"];
window.win_kueLimit1 = ["8.8",10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10];
window.win_kueDelay1 = [10,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420];
window.win_kueLimit2Low = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1];
window.win_kueLimit2High = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
window.win_kueLoopInterval = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6];

View File

@@ -12,8 +12,8 @@ export interface OriginalValues {
}
interface HandleSaveParams {
ids: string[]; // kueID im Redux-Slice
bezeichnungen: string[]; // kueBezeichnungen im Redux-Slice
ids: string[];
bezeichnungen: string[];
isolationsgrenzwerte: number[];
verzoegerung: number[];
untereSchleifenGrenzwerte: number[];
@@ -26,7 +26,7 @@ interface HandleSaveParams {
onClose: () => void;
}
const handleSave = ({
const handleSave = async ({
ids,
bezeichnungen,
isolationsgrenzwerte,
@@ -39,7 +39,7 @@ const handleSave = ({
dispatch,
onModulNameChange,
onClose,
}: HandleSaveParams): void => {
}: HandleSaveParams): Promise<void> => {
const changes: Partial<{
KID: string;
KIA: string;
@@ -81,38 +81,54 @@ const handleSave = ({
}
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)}`;
}
});
const isDev = window.location.hostname === "localhost";
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!");
if (isDev) {
await fetch("/api/cpl/updateKueDataAPIHandler", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
data: {
kueID: ids,
kueBezeichnungen: bezeichnungen,
isolationsgrenzwerte,
verzoegerung,
untereSchleifenGrenzwerte,
obereSchleifenGrenzwerte,
schleifenintervall,
},
}),
});
} 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.");
}

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/
const webVersion = "1.6.236";
const webVersion = "1.6.237";
export default webVersion;

View File

@@ -0,0 +1,52 @@
// /pages/api/cpl/updateKueDataAPIHandler.ts
import { NextApiRequest, NextApiResponse } from "next";
import path from "path";
import fs from "fs/promises";
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
const { data } = req.body;
if (!data) {
return res.status(400).json({ error: "No data provided" });
}
const filePath = path.join(
process.cwd(),
"apiMockData",
"SERVICE",
"kueDataMockData.js"
);
try {
const fileContent =
`window.win_kueID = ${JSON.stringify(data.kueID)};\n` +
`window.win_kuePSTmMinus96V = ${JSON.stringify(
data.kueBezeichnungen
)};\n` +
`window.win_kueLimit1 = ${JSON.stringify(data.isolationsgrenzwerte)};\n` +
`window.win_kueDelay1 = ${JSON.stringify(data.verzoegerung)};\n` +
`window.win_kueLimit2Low = ${JSON.stringify(
data.untereSchleifenGrenzwerte
)};\n` +
`window.win_kueLimit2High = ${JSON.stringify(
data.obereSchleifenGrenzwerte
)};\n` +
`window.win_kueLoopInterval = ${JSON.stringify(
data.schleifenintervall
)};\n`;
await fs.writeFile(filePath, fileContent, "utf-8");
res.status(200).json({ success: true });
} catch (error) {
console.error("Fehler beim Schreiben der Datei:", error);
res.status(500).json({ error: "Failed to write file" });
}
}