wip digitale Eingänge sind sichtbar aber keine Werte in Modal
This commit is contained in:
97
pages/api/cpl/updateDigitalInputs.ts
Normal file
97
pages/api/cpl/updateDigitalInputs.ts
Normal 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 (1–32 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" });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user