diff --git a/config/webVersion.ts b/config/webVersion.ts index f263cc0..d8ae4ad 100644 --- a/config/webVersion.ts +++ b/config/webVersion.ts @@ -6,5 +6,5 @@ 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). */ -const webVersion = "1.6.226"; +const webVersion = "1.6.227"; export default webVersion; diff --git a/docsForDev/Diagramme/Dev vs Prod Datenfluss.md b/docsForDev/Diagramme/Dev vs Prod Datenfluss.md new file mode 100644 index 0000000..b988ba4 --- /dev/null +++ b/docsForDev/Diagramme/Dev vs Prod Datenfluss.md @@ -0,0 +1,9 @@ +```mermaid +flowchart TD +DEV[Development] -->|API Call| APIHandler[/api/cpl/.../] +PROD[Production] -->|Script| EmbeddedJS[Original .js File] + + APIHandler -->|liefert JS| windowVars[window.win_xyz] + EmbeddedJS -->|liefert JS| windowVars + +``` diff --git a/pages/_app.tsx b/pages/_app.tsx index 55daf44..70d1430 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -8,7 +8,7 @@ import { loadWindowVariables } from "../utils/loadWindowVariables"; import Header from "../components/header/Header"; import Navigation from "../components/navigation/Navigation"; import Footer from "../components/footer/Footer"; -import WindowVariablesInitializer from "../components/WindowVariablesInitializer"; + import "../styles/globals.css"; import { AppProps } from "next/app"; @@ -53,7 +53,6 @@ function AppContent({ Component, pageProps }: AppProps) { return (
-
diff --git a/public/CPLmockData/SERVICE/Start.js b/public/CPLmockData/SERVICE/Start.js deleted file mode 100644 index a7eeeb7..0000000 --- a/public/CPLmockData/SERVICE/Start.js +++ /dev/null @@ -1,22 +0,0 @@ -var win_last20Messages = ` -16750035012024-10-23 15:08:58:000Modul 26 Isofehler kommend1 -16749032012024-10-23 15:07:24:000Modul 23 Isofehler gehend0 -16748035012024-10-23 15:01:52:000Modul 26 Isofehler gehend0 -16747028012024-10-23 15:01:30:000Modul 19 Isofehler kommend1 -16746035012024-10-23 14:57:33:000Modul 26 Isofehler kommend1 -16745032012024-10-23 14:56:54:000Modul 23 Isofehler kommend1 -16744028012024-10-23 14:51:01:000Modul 19 Isofehler gehend0 -16743035012024-10-23 14:50:46:000Modul 26 Isofehler gehend0 -16742032012024-10-23 14:49:49:000Modul 23 Isofehler gehend0 -16741035012024-10-23 14:49:13:000Modul 26 Isofehler kommend1 -16740028012024-10-23 14:45:28:000Modul 19 Isofehler kommend1 -16739032012024-10-23 14:44:16:000Modul 23 Isofehler kommend1 -16738035012024-10-23 14:42:08:000Modul 26 Isofehler gehend0 -16737032012024-10-23 14:37:10:000Modul 23 Isofehler gehend0 -16736035012024-10-23 14:35:20:000Modul 26 Isofehler kommend1 -16735012012024-10-23 14:31:44:000Modul 03 Isofehler kommend1 -16734017012024-10-23 14:30:14:000Modul 08 Isofehler kommend1 -16733035012024-10-23 14:28:15:000Modul 26 Isofehler gehend0 -16732033012024-10-23 14:26:23:000Modul 24 Isofehler kommend1 -16731012012024-10-23 14:24:58:000Modul 03 Isofehler gehend0 -`; diff --git a/public/CPLmockData/SERVICE/ae.js b/public/CPLmockData/SERVICE/ae.js deleted file mode 100644 index 6a181ef..0000000 --- a/public/CPLmockData/SERVICE/ae.js +++ /dev/null @@ -1,19 +0,0 @@ -// public/CPLmockData/SERVICE/ae.js -var win_analogeEingaenge1 = [1, 0, "Sensor2", 1, 1, 0, 1]; // Eingang 1 -var win_analogeEingaenge2 = [2, 22.91, "Feuchtigkeit", 1, 1, 1, 0]; // Eingang 2 -var win_analogeEingaenge3 = [3, 0, "Test", 1, 1, 0, 1]; // Eingang 3 -var win_analogeEingaenge4 = [4, 0, "test2", 1, 1, 0, 1]; // Eingang 4 -var win_analogeEingaenge5 = [5, 0, "----", 1, 1, 0, 1]; // Eingang 5 -var win_analogeEingaenge6 = [6, 21, "Temperatur", 1, 1, 0, 1]; // Eingang 6 -var win_analogeEingaenge7 = [7, 0, "----", 1, 1, 1, 0]; // Eingang 7 -var win_analogeEingaenge8 = [8, 0, "Test", 1, 1, 0, 1]; // Eingang 8 - -/* -ID (z. B. 1, 2, ... 8) → Identifikation des Eingangs -Wert (z. B. 0, 22.91, 21) → Der analoge Wert -Bezeichnung (z. B. "----", "Feuchtigkeit", "Temperatur") → Name des Sensors -uW (Unterer Warnwert) → 1 = grün, 0 = grau -uG (Unterer Grenzwert) → 1 = grün, 0 = grau -oW (Oberer Warnwert) → 1 = orange, 0 = grau -oG (Oberer Grenzwert) → 1 = grün, 0 = grau -*/ diff --git a/public/CPLmockData/SERVICE/da.js b/public/CPLmockData/SERVICE/da.js deleted file mode 100644 index 33075d3..0000000 --- a/public/CPLmockData/SERVICE/da.js +++ /dev/null @@ -1,3 +0,0 @@ -// public/CPLmockData/SERVICE/da.js -win_da_state = [1, 0, 1, 0]; -win_da_bezeichnung = ["Ausgang1", "Ausgang2", "Ausgang3", "Ausgang4"]; diff --git a/public/CPLmockData/SERVICE/de.js b/public/CPLmockData/SERVICE/de.js deleted file mode 100644 index a46c653..0000000 --- a/public/CPLmockData/SERVICE/de.js +++ /dev/null @@ -1,106 +0,0 @@ -// public/CPLmockData/SERVICE/de.js - -// Zustand -> DESxx xx =Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_state = [ - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; - -// Invertierung -> DEIxx xx = Nr Eingang 1-32 -var win_de_invert = [ - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; -/* -✅ Logik für Farbe abhängig von Status + Invertierung: -Anzeige ist rot wenn Status=1 ist. Die Farbe ist nicht abhängig von der Invertierung. -Status Invertierung Anzeige -1 1 🔴 rot -1 0 🔴 rot -0 1 ✅ grün -0 0 ✅ grün -*/ - -//Zählerstand -> DESxx xx =Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_counter = [ - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, -]; //Zählerstand - -//Filterzeit -> DEFxx xx =Nr Eingang 1-32 80-83 = BGT 1 bis 4 -// Frage: In digitale Eingänge Filterzeit DEFxx (In Lastenheft) und Flatter var flutter DEFxx ist ein und das selbe, welche Begriff soll ich nehmen? -// Antwort: Es ist die Filterzeit. Die Flatterzeit kommt später hinzu. -var win_de_time_filter = [ - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, -]; //Filterzeit - -// Gewichtung -> DEGxx xx = Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_weighting = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; //Gewichtung - -// Zähler aktiv -> DEZxx xx = Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_counter_active = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; //Zähler aktiv - -// Eingang offline -> DEAxx xx = Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_offline = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; //Eingang offline - -// Zähler aktiv -> DEZxx xx = Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_counter = [ - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.0, -]; - -// Name -> DENxx xx =Nr Eingang 1-32 80-83 = BGT 1 bis 4 -var win_de_label = [ - "DE1", - "DE2", - "DE3", - "DE4", - "DE5", - "DE6", - "DE7", - "DE8", - "DE9", - "DE10", - "DE11", - "DE12", - "DE13", - "DE14", - "DE15", - "DE16", - "DE17", - "DE18", - "DE19", - "DE20", - "DE21", - "DE22", - "DE23", - "DE24", - "DE25", - "DE26", - "DE27", - "DE28", - "DE29", - "DE30", - "DE31", - "DE32", -]; - -// Frage: In digitale Eingänge Filterzeit DEFxx (In Lastenheft) und Flatter var flutter DEFxx ist ein und das selbe, welche Begriff soll ich nehmen? -// Antwort: Es ist die Filterzeit. Die Flatterzeit kommt später hinzu. -/* var win_flutter = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -]; */ diff --git a/public/CPLmockData/SERVICE/opcua.js b/public/CPLmockData/SERVICE/opcua.js deleted file mode 100644 index 0743d60..0000000 --- a/public/CPLmockData/SERVICE/opcua.js +++ /dev/null @@ -1,5 +0,0 @@ -// public/CPL/SERVICE/opcua.js -//-------OPCUA Information Lesen---------------- -var win_opcUaZustand = "1"; -var win_opcUaActiveClientCount = "0"; -var win_opcUaNodesetName = "CPL V4 OPC UA Application Deutsche Bahn"; diff --git a/redux/thunks/fetchReferenceCurveBySlotThunk.ts b/redux/thunks/fetchReferenceCurveBySlotThunk.ts index 7341d13..a935072 100644 --- a/redux/thunks/fetchReferenceCurveBySlotThunk.ts +++ b/redux/thunks/fetchReferenceCurveBySlotThunk.ts @@ -1,11 +1,11 @@ // /redux/thunks/fetchReferenceCurveBySlotThunk.ts import { createAsyncThunk } from "@reduxjs/toolkit"; -import { fetchTDRReferenceCurve } from "../../services/fetchTDRReferenceCurveService"; +import { fetchTDRReferenceCurveService } from "../../services/fetchTDRReferenceCurveService"; export const fetchReferenceCurveBySlotThunk = createAsyncThunk( "tdrReferenceChart/fetchBySlot", async (slot: number) => { - const data = await fetchTDRReferenceCurve(slot); + const data = await fetchTDRReferenceCurveService(slot); if (!data) throw new Error("Keine Referenzdaten gefunden"); return { slot, data }; } diff --git a/redux/thunks/fetchTDMListBySlotThunk.ts b/redux/thunks/fetchTDMListBySlotThunk.ts index c6ea2f2..427dab4 100644 --- a/redux/thunks/fetchTDMListBySlotThunk.ts +++ b/redux/thunks/fetchTDMListBySlotThunk.ts @@ -1,12 +1,12 @@ // /redux/thunks/fetchTDMDataBySlotThunk.ts import { createAsyncThunk } from "@reduxjs/toolkit"; -import { fetchTDMDataBySlot } from "../../services/fetchSingleTDMDataService"; +import { fetchSingleTDMDataService } from "../../services/fetchSingleTDMDataService"; export const fetchTDMDataBySlotThunk = createAsyncThunk( "tdmSingleChart/fetchSlotData", async (slot: number) => { - const data = await fetchTDMDataBySlot(slot); + const data = await fetchSingleTDMDataService(slot); if (!data) throw new Error("Keine TDM-Daten für diesen Slot gefunden"); return { slot, data }; // ✅ das erwartet der Slice! diff --git a/redux/thunks/fetchTDRChartDataByIdThunk.ts b/redux/thunks/fetchTDRChartDataByIdThunk.ts index 5e2518e..c20e96f 100644 --- a/redux/thunks/fetchTDRChartDataByIdThunk.ts +++ b/redux/thunks/fetchTDRChartDataByIdThunk.ts @@ -1,11 +1,11 @@ // /redux/thunks/fetchTDRChartDataByIdThunk.ts import { createAsyncThunk } from "@reduxjs/toolkit"; -import { fetchTDRChartDataById } from "../../services/fetchTDRChartDataByIdService"; +import { fetchTDRChartDataByIdService } from "../../services/fetchTDRChartDataByIdService"; export const fetchTDRChartDataByIdThunk = createAsyncThunk( "tdrDataById/fetchById", async (id: number) => { - const data = await fetchTDRChartDataById(id); + const data = await fetchTDRChartDataByIdService(id); if (!data) throw new Error(`Keine TDR-Daten für ID ${id}`); return { id, data }; } diff --git a/utils/loadWindowVariables.ts b/utils/loadWindowVariables.ts index 1d94e2e..355af79 100644 --- a/utils/loadWindowVariables.ts +++ b/utils/loadWindowVariables.ts @@ -8,60 +8,30 @@ interface CustomWindow extends Window { // ✅ Hauptfunktion zum Laden von `window`-Variablen export async function loadWindowVariables(): Promise> { return new Promise((resolve, reject) => { - const requiredVars: string[] = [ - "win_deviceName", - "win_mac1", - "win_ip", - "win_subnet", - "win_gateway", - "win_cplInternalTimestamp", - "win_ntp1", - "win_ntp2", - "win_ntp3", - "win_systemZeit", - "win_ntpTimezone", - "win_ntpActive", - "win_de_state", - "win_counter", - "win_flutter", - "win_kueOnline", - "win_kueID", - "win_kuePSTmMinus96V", - "win_kueAlarm1", - "win_kueAlarm2", - "win_kueIso", - "win_kueResidence", - "win_kueCableBreak", - "win_kueGroundFault", - "win_kueLimit1", - "win_kueLimit2Low", - "win_kueDelay1", - "win_kueLoopInterval", - "win_kueVersion", - "win_tdrAtten", - "win_tdrPulse", - "win_tdrSpeed", - "win_tdrAmp", - "win_tdrTrigger", - "win_tdrLocation", - "win_tdrActive", - "win_kueOverflow", - "win_tdrLast", - "win_appVersion", - "win_da_state", - "win_da_bezeichnung", + const requiredVars: string[] = ["win_deviceName"]; + const isDev = window.location.hostname === "localhost"; + + // ✅ Skripte, die geladen werden müssen + const scripts: string[] = [ + isDev ? "analogeEingaengeAPIHandler" : "ae.js", + isDev ? "digitaleEingaengeAPIHandler" : "de.js", + //isDev ? "digitalOutputsAPIHandler" : "da.js", // das wird Momentan nicht gebraucht + isDev ? "kabelueberwachungAPIHandler" : "kueData.js", + isDev ? "last20MessagesAPIHandler" : "start.js", + isDev ? "opcuaAPIHandler" : "opcua.js", + //isDev ? "slotDataAPIHandler" : "slotData.js", // das wird Momentan nicht gebraucht + isDev ? "systemAPIHandler" : "system.js", + //isDev ? "tdmDataAPIHandler" : "tdmData.js", // das wird Momentan nicht gebraucht + //isDev ? "tdrDataAPIHandler" : "tdrData.js", // das wird Momentan nicht gebraucht ]; - const scripts: string[] = ["system.js", "kueData.js"]; - // ✅ Erkenne Umgebung anhand von `window.location.hostname` - const isDev = window.location.hostname === "localhost"; const loadScript = (src: string): Promise => { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = isDev - ? `/CPLmockData/SERVICE/${src}` // Entwicklungsumgebung + ? `/api/cpl/${src}` // Entwicklungsumgebung : `/CPL?/CPL/SERVICE/${src}`; // Produktionsumgebung script.async = true; script.onload = () => resolve();