From 28775ab63c69deccfe91c9dd6262ab0a71e85206 Mon Sep 17 00:00:00 2001 From: Ismail Ali Date: Wed, 16 Apr 2025 22:17:56 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20API=20zum=20gezielten=20=C3=9Cberschrei?= =?UTF-8?q?ben=20einzelner=20KUE-Mock-Werte=20erstellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - nur betroffene window.win_*[slot] Werte werden ersetzt - gesamte Datei bleibt erhalten - handleSave übermittelt nur geänderte Felder und Slot --- .../SERVICE/kabelueberwachungMockData.js | 59 ++----------------- .../kue705FO/handlers/handleSave.ts | 16 ++--- config/webVersion.ts | 2 +- pages/api/cpl/updateKueDataAPIHandler.ts | 40 ++++++------- 4 files changed, 35 insertions(+), 82 deletions(-) diff --git a/apiMockData/SERVICE/kabelueberwachungMockData.js b/apiMockData/SERVICE/kabelueberwachungMockData.js index bc18770..718d446 100644 --- a/apiMockData/SERVICE/kabelueberwachungMockData.js +++ b/apiMockData/SERVICE/kabelueberwachungMockData.js @@ -46,11 +46,7 @@ var win_kueIso = [ 10.5, 10.0, 200.0, 200.0, 200.0, 200.0, ]; //Grenzwert (MOhm) für Isolationswiderstand -var win_kueLimit1 = [ - 9, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, - 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, - 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, -]; +var win_kueLimit1 = [ "8.9", 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, ]; /* Verzögerung/Filterzeit 420 Sekunden Standardeinstellung @@ -61,11 +57,7 @@ Wenn der Widerstand innerhalb dieser 420 Sekunden wieder über den Grenzwert ste die Filterzeit startet beim nächsten Unterschreiten des Grenzwerts neu. Die Filterzeit verhindert also, dass kurzfristige Schwankungen oder Störungen fälschlicherweise als Fehler gemeldet werden. */ -var 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, -]; +var 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, ]; //--------------------------------------------------- //Schleifenwiderstand in Display (resDisplay) Einheit: KOhm var win_kueResidence = [ @@ -74,17 +66,11 @@ var win_kueResidence = [ 0.615, 0.494, 1.217, 65.0, 65.0, 65.0, 65.0, ]; //Schleifenmessung Unterer Grenzwert (KOhm) -var 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, -]; +var 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, ]; +var 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, ]; //Schleifenintervall (h) für Schleifenmessung -var 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, -]; +var 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, ]; //--------------------------------------------------- //KÜ Modul Version soll /100 und davor V angezeigt werden z.B. 4.19V var win_kueVersion = [ @@ -94,40 +80,7 @@ var win_kueVersion = [ ]; //Modulname in Komponente und auf der Anzeige -var 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", -]; +var 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", ]; //--------------------------------------------------- diff --git a/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts b/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts index dffd6b1..fbda9e0 100644 --- a/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts +++ b/components/main/kabelueberwachung/kue705FO/handlers/handleSave.ts @@ -88,14 +88,14 @@ const handleSave = async ({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - data: { - kueID: ids, - kueBezeichnungen: bezeichnungen, - isolationsgrenzwerte, - verzoegerung, - untereSchleifenGrenzwerte, - obereSchleifenGrenzwerte, - schleifenintervall, + 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], }, }), }); diff --git a/config/webVersion.ts b/config/webVersion.ts index e820292..fca3bce 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.237"; +const webVersion = "1.6.238"; export default webVersion; diff --git a/pages/api/cpl/updateKueDataAPIHandler.ts b/pages/api/cpl/updateKueDataAPIHandler.ts index 1a86704..f736abf 100644 --- a/pages/api/cpl/updateKueDataAPIHandler.ts +++ b/pages/api/cpl/updateKueDataAPIHandler.ts @@ -11,36 +11,36 @@ export default async function handler( return res.status(405).json({ error: "Method not allowed" }); } - const { data } = req.body; + const { slot, changes } = req.body; - if (!data) { - return res.status(400).json({ error: "No data provided" }); + if (slot === undefined || !changes || typeof changes !== "object") { + return res.status(400).json({ error: "Missing slot or changes" }); } const filePath = path.join( process.cwd(), "apiMockData", "SERVICE", - "kueDataMockData.js" + "kabelueberwachungMockData.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`; + let fileContent = await fs.readFile(filePath, "utf-8"); + + for (const [varName, value] of Object.entries(changes)) { + const regex = new RegExp( + `(var\\s+${varName}\\s*=\\s*\\[)([^\\]]*)(\\])`, + "m" + ); + + const match = fileContent.match(regex); + if (match) { + const values = match[2].split(",").map((v) => v.trim()); + values[slot] = JSON.stringify(value); // korrektes Format: z. B. `"FTZ_2"` oder `10.5` + const updatedArray = `${match[1]} ${values.join(", ")} ${match[3]}`; + fileContent = fileContent.replace(regex, updatedArray); + } + } await fs.writeFile(filePath, fileContent, "utf-8");