- Unterstützung für drei Modi implementiert: json, jsmock und production - fetchDigitalOutputsService.ts erkennt NEXT_PUBLIC_CPL_MODE und lädt Daten je nach Umgebung - API-Handler /api/cpl/updateDigitalOutputsHandler verarbeitet POST-Anfragen für json und jsmock - In production wird Statusänderung per Redirect (window.location.href) an das CPL gesendet - Redux-Slice für digitale Ausgänge vollständig angebunden - UI (DigitalOutputsWidget.tsx) zeigt Status und ermöglicht das Umschalten - Dokumentation als README_digitalOutputs_final.md mit UML-Diagrammen ergänzt - CHANGELOG.md auf Version 1.6.417 aktualisiert
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
// /pages/api/fake-cpl/SERVICE/fetchDigitalOutputsAPIHandler.ts
|
|
|
|
import fs from "fs";
|
|
import path from "path";
|
|
|
|
export default function handler(req, res) {
|
|
const filePath = path.join(
|
|
process.cwd(),
|
|
"mocks",
|
|
"device-cgi-simulator",
|
|
"SERVICE",
|
|
"digitalOutputsMockData.js"
|
|
);
|
|
|
|
try {
|
|
const content = fs.readFileSync(filePath, "utf-8");
|
|
|
|
const win_da_state = extractArray(content, "win_da_state");
|
|
const win_da_bezeichnung = extractArray(content, "win_da_bezeichnung");
|
|
|
|
return res.status(200).json({
|
|
win_da_state,
|
|
win_da_bezeichnung,
|
|
});
|
|
} catch (err) {
|
|
console.error("❌ Fehler beim Lesen der JS-Mock-Datei:", err);
|
|
return res.status(500).json({ error: "Fehler beim Lesen der Mock-Datei" });
|
|
}
|
|
}
|
|
|
|
// 🔧 Hilfsfunktion: Extrahiert Array aus JS-Datei
|
|
function extractArray(content: string, varName: string): any[] {
|
|
const match = content.match(
|
|
new RegExp(`${varName}\\s*=\\s*\\[(.*?)\\];`, "s")
|
|
);
|
|
if (!match) {
|
|
console.warn(`⚠️ ${varName} nicht gefunden`);
|
|
return [];
|
|
}
|
|
|
|
try {
|
|
return JSON.parse(`[${match[1]}]`);
|
|
} catch (e) {
|
|
console.warn(`⚠️ Fehler beim Parsen von ${varName}:`, e);
|
|
return [];
|
|
}
|
|
}
|