wip digitale Eingänge sind sichtbar aber keine Werte in Modal

This commit is contained in:
ISA
2025-06-20 06:50:40 +02:00
parent 8d67b08d7f
commit 7ff1c4aaaf
20 changed files with 229 additions and 376 deletions

View File

@@ -0,0 +1,97 @@
// /pages/api/cpl/updateDigitalInputs.ts
import type { NextApiRequest, NextApiResponse } from "next";
import path from "path";
import fs from "fs";
// WICHTIG: Der Mock-Datenpfad
const mockFilePath = path.join(
process.cwd(),
"apiMockData",
"SERVICE",
"digitalInputsMockData.js"
);
// Funktion zum Parsen des JS-Datei-Inhalts in ein eval-fähiges Objekt
function extractMockData(raw: string) {
const context = {};
const func = new Function(
"context",
`
with (context) {
${raw}
return {
win_de_label,
win_de_invert,
win_de_state,
win_de_counter,
win_de_time_filter,
win_de_weighting,
win_de_counter_active,
win_de_offline
};
}
`
);
return func({});
}
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method !== "POST") {
return res.status(405).json({ error: "Only POST supported" });
}
try {
const { id, name, invertierung, filterzeit, gewichtung, zaehlerAktiv } =
req.body;
if (typeof id !== "number" || id < 1 || id > 32) {
return res.status(400).json({ error: "Ungültige ID (132 erlaubt)" });
}
const rawContent = fs.readFileSync(mockFilePath, "utf-8");
const data = extractMockData(rawContent);
// Update der Daten
if (typeof name === "string") data.win_de_label[id - 1] = name;
if (typeof invertierung === "number")
data.win_de_invert[id - 1] = invertierung;
if (typeof filterzeit === "number")
data.win_de_time_filter[id - 1] = filterzeit;
if (typeof gewichtung === "number")
data.win_de_weighting[id - 1] = gewichtung;
if (typeof zaehlerAktiv === "number")
data.win_de_counter_active[id - 1] = zaehlerAktiv;
if (typeof invertierung === "number")
data.win_de_invert[id - 1] = invertierung;
// Erzeuge neuen Dateiinhalt
const newContent = `
// auto-generated from update API
var win_de_state = ${JSON.stringify(data.win_de_state, null, 2)};
var win_de_invert = ${JSON.stringify(data.win_de_invert, null, 2)};
var win_de_counter = ${JSON.stringify(data.win_de_counter, null, 2)};
var win_de_time_filter = ${JSON.stringify(data.win_de_time_filter, null, 2)};
var win_de_weighting = ${JSON.stringify(data.win_de_weighting, null, 2)};
var win_de_counter_active = ${JSON.stringify(
data.win_de_counter_active,
null,
2
)};
var win_de_offline = ${JSON.stringify(data.win_de_offline, null, 2)};
var win_de_label = ${JSON.stringify(data.win_de_label, null, 2)};
`;
fs.writeFileSync(mockFilePath, newContent, "utf-8");
return res
.status(200)
.json({ message: "Update erfolgreich", id, name, invertierung });
} catch (err: any) {
console.error("Fehler beim Schreiben:", err);
return res.status(500).json({ error: "Update fehlgeschlagen" });
}
}