fix: analoge Eingänge Interval in Modal in json
This commit is contained in:
@@ -1,70 +1,67 @@
|
||||
// /pages/api/cpl/getAnalogInputsHandler.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
const mode = process.env.NEXT_PUBLIC_CPL_MODE;
|
||||
|
||||
if (mode === "json") {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"mocks/api/SERVICE/analogInputsMockData.json"
|
||||
);
|
||||
const content = fs.readFileSync(filePath, "utf-8");
|
||||
const data = JSON.parse(content);
|
||||
return res.status(200).json(data);
|
||||
}
|
||||
|
||||
if (mode === "jsmock") {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"mocks/device-cgi-simulator/SERVICE/analogInputsMockData.js"
|
||||
);
|
||||
const fileContent = fs.readFileSync(filePath, "utf-8");
|
||||
|
||||
function extractArray(name) {
|
||||
const match = fileContent.match(
|
||||
new RegExp(`var\\s+${name}\\s*=\\s*\\[([\\s\\S]*?)\\];`)
|
||||
try {
|
||||
if (mode === "json") {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"mocks/api/SERVICE/analogInputsMockData.json"
|
||||
);
|
||||
return match
|
||||
? match[1].split(",").map((s) => s.trim().replace(/^["']|["']$/g, ""))
|
||||
: [];
|
||||
const content = fs.readFileSync(filePath, "utf-8");
|
||||
const data = JSON.parse(content);
|
||||
return res.status(200).json(data);
|
||||
}
|
||||
|
||||
const result = {
|
||||
win_analogInputsValues: extractArray("win_analogInputsValues").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsNames: extractArray("win_analogInputsNames"),
|
||||
win_analogInputsOffset: extractArray("win_analogInputsOffset").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsFactor: extractArray("win_analogInputsFactor").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsloggerIntervall: extractArray(
|
||||
"win_analogInputsloggerIntervall"
|
||||
).map(Number),
|
||||
win_analogInputsUnits: extractArray("win_analogInputsUnits"),
|
||||
win_analogInputsWeighting: extractArray("win_analogInputsWeighting").map(
|
||||
Number
|
||||
),
|
||||
};
|
||||
if (mode === "jsmock") {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"mocks/device-cgi-simulator/SERVICE/analogInputsMockData.js"
|
||||
);
|
||||
const content = fs.readFileSync(filePath, "utf-8");
|
||||
|
||||
// Begrenzung auf maximal 8 Elemente je Array
|
||||
Object.keys(result).forEach((key) => {
|
||||
if (Array.isArray(result[key])) {
|
||||
result[key] = result[key].slice(0, 8);
|
||||
function extractArray(name: string): any[] {
|
||||
const match = content.match(
|
||||
new RegExp(`var\s+${name}\s*=\s*\[([\s\S]*?)\];`)
|
||||
);
|
||||
if (!match) return [];
|
||||
return match[1]
|
||||
.split(",")
|
||||
.map((s) => s.trim().replace(/^["']|["']$/g, ""))
|
||||
.slice(0, 8);
|
||||
}
|
||||
});
|
||||
|
||||
return res.status(200).json(result);
|
||||
const responseData = {
|
||||
win_analogInputsValues: extractArray("win_analogInputsValues").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsNames: extractArray("win_analogInputsNames"),
|
||||
win_analogInputsOffset: extractArray("win_analogInputsOffset").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsFactor: extractArray("win_analogInputsFactor").map(
|
||||
Number
|
||||
),
|
||||
win_analogInputsLoggerIntervall: extractArray(
|
||||
"win_analogInputsLoggerIntervall"
|
||||
).map(Number),
|
||||
win_analogInputsUnits: extractArray("win_analogInputsUnits"),
|
||||
win_analogInputsWeighting: extractArray(
|
||||
"win_analogInputsWeighting"
|
||||
).map(Number),
|
||||
};
|
||||
|
||||
return res.status(200).json(responseData);
|
||||
}
|
||||
|
||||
return res.status(400).json({ error: "Unsupported mode" });
|
||||
} catch (error) {
|
||||
console.error("❌ Fehler beim Lesen der analogen Eingänge:", error);
|
||||
return res.status(500).json({ error: "Fehler beim Lesen der Datei" });
|
||||
}
|
||||
|
||||
return res.status(400).json({ error: "Unsupported mode" });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user