From 49ccf1da5d5c4d75575799be03b290a1a7abdf5e Mon Sep 17 00:00:00 2001 From: Ismail Ali Date: Wed, 16 Apr 2025 00:35:22 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20handleSave=20final=20auf=20API-Handler?= =?UTF-8?q?=20f=C3=BCr=20Development=20erweitert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Änderungen in Dev-Umgebung werden per /api/cpl/updateKueDataAPIHandler gespeichert - Production weiterhin GET-Request mit Parametern - Fehlerbehandlung optimiert --- apiMockData/SERVICE/kueDataMockData.js | 7 ++ .../kue705FO/handlers/handleSave.ts | 84 +++++++++++-------- config/webVersion.ts | 2 +- pages/api/cpl/updateKueDataAPIHandler.ts | 52 ++++++++++++ 4 files changed, 110 insertions(+), 35 deletions(-) create mode 100644 apiMockData/SERVICE/kueDataMockData.js create mode 100644 pages/api/cpl/updateKueDataAPIHandler.ts diff --git a/apiMockData/SERVICE/kueDataMockData.js b/apiMockData/SERVICE/kueDataMockData.js new file mode 100644 index 0000000..2bb39f7 --- /dev/null +++ b/apiMockData/SERVICE/kueDataMockData.js @@ -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]; diff --git a/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts b/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts index f369f42..dffd6b1 100644 --- a/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts +++ b/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts @@ -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 => { 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."); } diff --git a/config/webVersion.ts b/config/webVersion.ts index f3886fa..e820292 100644 --- a/config/webVersion.ts +++ b/config/webVersion.ts @@ -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; diff --git a/pages/api/cpl/updateKueDataAPIHandler.ts b/pages/api/cpl/updateKueDataAPIHandler.ts new file mode 100644 index 0000000..1a86704 --- /dev/null +++ b/pages/api/cpl/updateKueDataAPIHandler.ts @@ -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" }); + } +}