refactor: last20Messages und digitale Eingänge auf API-gesteuerte Mock-Dateien umgestellt
- Start.js (last20Messages) als JS-Mock in /apiMockData/jsMockFiles gespeichert - de.js (digitale Eingänge) in /apiMockData/SERVICE verlagert - Beide werden über eigene API-Endpoints bzw. per Script-Tag aus Development-Verzeichnis geladen - Kein Zugriff mehr über /public notwendig, Verhalten in DEV und PROD identisch
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// public/CPLmockData/SERVICE/de.js
|
||||
// apiMockData/SERVICE/de.js
|
||||
|
||||
// Zustand -> DESxx xx =Nr Eingang 1-32 80-83 = BGT 1 bis 4
|
||||
var win_de_state = [
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// /apiMockData/SERVICE/last20Messages.js
|
||||
var win_last20Messages = `
|
||||
<tr><td>16750</td><td>03501</td><td>2024-10-23 15:08:58:000</td><td>Modul 26 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16749</td><td>03201</td><td>2024-10-23 15:07:24:000</td><td>Modul 23 Isofehler gehend</td><td>0</td></tr>
|
||||
23
apiMockData/jsMockFiles/last20Messages.js
Normal file
23
apiMockData/jsMockFiles/last20Messages.js
Normal file
@@ -0,0 +1,23 @@
|
||||
// /apiMockData/jsMockFiles/last20Messages.js
|
||||
var win_last20Messages = `
|
||||
<tr><td>16750</td><td>03501</td><td>2024-10-23 15:08:58:000</td><td>Modul 26 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16749</td><td>03201</td><td>2024-10-23 15:07:24:000</td><td>Modul 23 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16748</td><td>03501</td><td>2024-10-23 15:01:52:000</td><td>Modul 26 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16747</td><td>02801</td><td>2024-10-23 15:01:30:000</td><td>Modul 19 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16746</td><td>03501</td><td>2024-10-23 14:57:33:000</td><td>Modul 26 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16745</td><td>03201</td><td>2024-10-23 14:56:54:000</td><td>Modul 23 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16744</td><td>02801</td><td>2024-10-23 14:51:01:000</td><td>Modul 19 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16743</td><td>03501</td><td>2024-10-23 14:50:46:000</td><td>Modul 26 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16742</td><td>03201</td><td>2024-10-23 14:49:49:000</td><td>Modul 23 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16741</td><td>03501</td><td>2024-10-23 14:49:13:000</td><td>Modul 26 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16740</td><td>02801</td><td>2024-10-23 14:45:28:000</td><td>Modul 19 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16739</td><td>03201</td><td>2024-10-23 14:44:16:000</td><td>Modul 23 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16738</td><td>03501</td><td>2024-10-23 14:42:08:000</td><td>Modul 26 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16737</td><td>03201</td><td>2024-10-23 14:37:10:000</td><td>Modul 23 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16736</td><td>03501</td><td>2024-10-23 14:35:20:000</td><td>Modul 26 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16735</td><td>01201</td><td>2024-10-23 14:31:44:000</td><td>Modul 03 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16734</td><td>01701</td><td>2024-10-23 14:30:14:000</td><td>Modul 08 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16733</td><td>03501</td><td>2024-10-23 14:28:15:000</td><td>Modul 26 Isofehler gehend</td><td>0</td></tr>
|
||||
<tr><td>16732</td><td>03301</td><td>2024-10-23 14:26:23:000</td><td>Modul 24 Isofehler kommend</td><td>1</td></tr>
|
||||
<tr><td>16731</td><td>01201</td><td>2024-10-23 14:24:58:000</td><td>Modul 03 Isofehler gehend</td><td>0</td></tr>
|
||||
`;
|
||||
@@ -6,5 +6,5 @@
|
||||
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
||||
|
||||
*/
|
||||
const webVersion = "1.6.220";
|
||||
const webVersion = "1.6.221";
|
||||
export default webVersion;
|
||||
|
||||
19
pages/api/cpl/digitalOutputs.ts
Normal file
19
pages/api/cpl/digitalOutputs.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
// /pages/api/cpl/digitalOutputs.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(process.cwd(), "apiMockData", "SERVICE", "da.js");
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
21
pages/api/cpl/digitaleEingaenge.ts
Normal file
21
pages/api/cpl/digitaleEingaenge.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
// /pages/api/cpl/digitaleEingaenge.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(process.cwd(), "apiMockData", "SERVICE", "de.js");
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
|
||||
res.setHeader("Content-Type", "text/javascript"); // wichtig!
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
24
pages/api/cpl/kueData.ts
Normal file
24
pages/api/cpl/kueData.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
// /pages/api/cpl/kueData.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"apiMockData",
|
||||
"SERVICE",
|
||||
"kueData.js"
|
||||
);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
25
pages/api/cpl/last20Messages.ts
Normal file
25
pages/api/cpl/last20Messages.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
// /pages/api/cpl/last20Messages.ts
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"apiMockData",
|
||||
"SERVICE",
|
||||
"last20Messages.js"
|
||||
);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
|
||||
res.setHeader("Content-Type", "text/javascript"); // wichtig!
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
24
pages/api/cpl/opcuaSettings.ts
Normal file
24
pages/api/cpl/opcuaSettings.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
// /pages/api/cpl/opcuaSettings.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"apiMockData",
|
||||
"SERVICE",
|
||||
"opcua.js"
|
||||
);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// /pages/api/cpl/slotData.ts
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
24
pages/api/cpl/systemSettings.ts
Normal file
24
pages/api/cpl/systemSettings.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
// /pages/api/cpl/systemSettings.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"apiMockData",
|
||||
"SERVICE",
|
||||
"system.js"
|
||||
);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).send(data);
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
30
pages/api/cpl/tdmData.ts
Normal file
30
pages/api/cpl/tdmData.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
// /pages/api/cpl/tdmData.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const { slot } = req.query;
|
||||
|
||||
if (!slot) {
|
||||
return res.status(400).json({ error: "Missing parameter: slot" });
|
||||
}
|
||||
|
||||
const filePath = path.join(
|
||||
process.cwd(),
|
||||
"apiMockData",
|
||||
"TDM",
|
||||
`slot${slot}.json`
|
||||
);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).json(JSON.parse(data));
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
25
pages/api/cpl/tdrData.ts
Normal file
25
pages/api/cpl/tdrData.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
// /pages/api/cpl/tdrData.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
|
||||
export default async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse
|
||||
) {
|
||||
const { id } = req.query;
|
||||
|
||||
if (!id) {
|
||||
return res.status(400).json({ error: "Missing parameter: id" });
|
||||
}
|
||||
|
||||
const filePath = path.join(process.cwd(), "apiMockData", "TDR", `${id}.json`);
|
||||
|
||||
try {
|
||||
const data = await fs.readFile(filePath, "utf-8");
|
||||
res.status(200).json(JSON.parse(data));
|
||||
} catch (error) {
|
||||
res.status(404).json({ error: "File not found" });
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
// pages/api/test.ts
|
||||
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
|
||||
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
res.status(200).json({
|
||||
message: "✅ Die API ist erreichbar!",
|
||||
method: req.method,
|
||||
timestamp: new Date().toISOString(),
|
||||
});
|
||||
}
|
||||
@@ -7,7 +7,7 @@ export const fetchAllTDMDataFromServer = async (): Promise<any[]> => {
|
||||
|
||||
const slotRequests = Array.from({ length: 32 }, (_, i) => {
|
||||
const url = isDev
|
||||
? `/CPLmockData/TDM/slot${i}.json` // ✅ Entwicklung: aus public-Ordner
|
||||
? `/apiMockData/TDM/slot${i}.json` // ✅ Entwicklung: aus public-Ordner
|
||||
: `${window.location.origin}/CPL?Service/empty.acp&TDM=${i}`; // ✅ Produktion
|
||||
|
||||
return fetch(url)
|
||||
|
||||
@@ -4,7 +4,7 @@ export const fetchAllTDRChartDataFromServer = async (): Promise<any[]> => {
|
||||
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
|
||||
|
||||
const basePath = isDev
|
||||
? "/CPLmockData/LastTDR/jsonDatei"
|
||||
? "/apiMockData/LastTDR/jsonDatei"
|
||||
: "/CPL?/CPL/LastTDR";
|
||||
|
||||
const fileNames = Array.from({ length: 32 }, (_, i) => `slot${i}.json`);
|
||||
|
||||
@@ -4,7 +4,7 @@ const getTDRReferenceBasePath = () => {
|
||||
if (typeof window !== "undefined") {
|
||||
const env = process.env.NEXT_PUBLIC_NODE_ENV;
|
||||
return env === "development"
|
||||
? "/CPLMockData/tdr-reference-curves"
|
||||
? "/apiMockData/tdr-reference-curves"
|
||||
: "/CPL?/CPL/tdr-reference-curves";
|
||||
}
|
||||
return "";
|
||||
|
||||
@@ -12,7 +12,7 @@ export const fetchAnalogeEingaenge = async (): Promise<Record<
|
||||
|
||||
// Skriptpfad abhängig von der Umgebung
|
||||
const scriptSrc = isDevelopment
|
||||
? "/CPLmockData/SERVICE/ae.js"
|
||||
? "/apiMockData/SERVICE/ae.js"
|
||||
: "/CPL?/CPL/SERVICE/ae.js";
|
||||
|
||||
// Skript dynamisch laden
|
||||
|
||||
@@ -6,7 +6,7 @@ export const fetchDigitalOutputs = async () => {
|
||||
const scriptSrc =
|
||||
process.env.NEXT_PUBLIC_NODE_ENV === "production"
|
||||
? "/CPL?/CPL/SERVICE/da.js"
|
||||
: "/CPLmockData/SERVICE/da.js";
|
||||
: "/apiMockData/SERVICE/da.js";
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
const script = document.createElement("script");
|
||||
|
||||
@@ -8,7 +8,7 @@ export const fetchDigitaleEingaenge = async () => {
|
||||
const scriptSrc =
|
||||
process.env.NEXT_PUBLIC_NODE_ENV === "production"
|
||||
? "/CPL?/CPL/SERVICE/de.js"
|
||||
: "/CPLmockData/SERVICE/de.js";
|
||||
: "/apiMockData/SERVICE/de.js";
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
const script = document.createElement("script");
|
||||
|
||||
@@ -5,11 +5,11 @@ export const fetchLast20MessagesFromWindow = async (): Promise<
|
||||
> => {
|
||||
if (typeof window === "undefined") return null;
|
||||
|
||||
// ✅ Start.js nur bei Bedarf nachladen (Pfad abhängig von Umgebung)
|
||||
const scriptSrc =
|
||||
process.env.NEXT_PUBLIC_NODE_ENV === "production"
|
||||
? "/CPL?/CPL/SERVICE/Start.js"
|
||||
: "/CPLmockData/SERVICE/Start.js";
|
||||
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
|
||||
|
||||
const scriptSrc = isDev
|
||||
? "/api/cpl/last20Messages" // in Dev → per API geladen
|
||||
: "/CPL?/CPL/SERVICE/Start.js"; // in Prod → echtes Script vom CPL
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
const script = document.createElement("script");
|
||||
|
||||
@@ -8,7 +8,7 @@ export const fetchOpcUaSettings = async () => {
|
||||
const scriptSrc =
|
||||
process.env.NEXT_PUBLIC_NODE_ENV === "production"
|
||||
? "/CPL?/CPL/SERVICE/opcua.js"
|
||||
: "/CPLmockData/SERVICE/opcua.js";
|
||||
: "/apiMockData/SERVICE/opcua.js";
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
const script = document.createElement("script");
|
||||
|
||||
@@ -6,7 +6,7 @@ export const fetchSystemSettings = async () => {
|
||||
const isDev = process.env.NODE_ENV === "development";
|
||||
const scriptSrc =
|
||||
process.env.NEXT_PUBLIC_NODE_ENV === "development"
|
||||
? "/CPLmockData/SERVICE/system.js"
|
||||
? "/apiMockData/SERVICE/system.js"
|
||||
: "/CPL?/CPL/SERVICE/system.js";
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
|
||||
@@ -6,7 +6,7 @@ export const fetchTDMDataBySlot = async (slot: number): Promise<any> => {
|
||||
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
|
||||
|
||||
const url = isDev
|
||||
? `/CPLmockData/TDM/slot${slot}.json`
|
||||
? `/apiMockData/TDM/slot${slot}.json`
|
||||
: `${window.location.origin}/CPL?Service/empty.acp&TDM=${slot}`;
|
||||
|
||||
try {
|
||||
|
||||
@@ -6,7 +6,7 @@ export const fetchTDRChartDataById = async (
|
||||
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
|
||||
|
||||
const url = isDev
|
||||
? `http://localhost:3000/CPLmockData/TDR/${id}.json`
|
||||
? `http://localhost:3000/apiMockData/TDR/${id}.json`
|
||||
: `${window.location.origin}/CPL?Service/empty.acp&TDR=${id}`;
|
||||
|
||||
try {
|
||||
|
||||
@@ -13,7 +13,7 @@ export const fetchTDRReferenceCurve = async (
|
||||
// 🔁 Fallback: Datei oder Produktion-API
|
||||
const isDev = process.env.NEXT_PUBLIC_NODE_ENV === "development";
|
||||
const url = isDev
|
||||
? `/CPLmockData/tdr-reference-curves/slot${slot}.json`
|
||||
? `/apiMockData/tdr-reference-curves/slot${slot}.json`
|
||||
: `${window.location.origin}/CPL?Service/empty.acp&TDR=${slot}`;
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user