fix: Verhindere Wechsel zwischen aktivem und inaktivem Status bei leerem Slot

- Korrigiert die Bedingung für `kueOnline`, sodass nur aktive Slots den Alarmstatus überprüfen.
- Entfernt Mehrfachreferenzen von `kueOnline`, die den Status ungewollt überschrieben haben.
- Setzt ein bedingtes Update für `kueCableBreak`, `kueAlarm1`, und `kueAlarm2`, um unnötige Aktualisierungen zu vermeiden.
- Stellt sicher, dass der erste Slot als "Leer" angezeigt wird, wenn `kueOnline` auf `0` gesetzt ist.
This commit is contained in:
ISA
2024-10-27 08:09:54 +01:00
parent 2dc40ccd59
commit 7f792f833f
6 changed files with 169 additions and 39 deletions

View File

@@ -41,7 +41,7 @@ function Header() {
script.async = true; script.async = true;
script.onload = () => { script.onload = () => {
console.log(`System.js wurde erfolgreich geladen.`); // console.log(`System.js wurde erfolgreich geladen.`);
// Systemvariablen überprüfen und zuweisen // Systemvariablen überprüfen und zuweisen
if (window.deviceName) { if (window.deviceName) {

View File

@@ -1,7 +1,3 @@
// components/modulesStatus/KabelModulStatus.jsx
//Bei Kabelbruch (cableBreak), Erdschluss (groundFault), Isolationsfehler (measure1Alarm) oder Schleifenfehler (measure2Alarm) wird der Status rot angezeigt. Ansonsten grün.
import React from "react";
const KabelModulStatus = ({ slot, kueCableBreak, isOnline, moduleVersion }) => { const KabelModulStatus = ({ slot, kueCableBreak, isOnline, moduleVersion }) => {
if (!isOnline) { if (!isOnline) {
return ( return (
@@ -11,7 +7,7 @@ const KabelModulStatus = ({ slot, kueCableBreak, isOnline, moduleVersion }) => {
); );
} }
// Bestimme den Modultyp basierend auf der Version // Modultyp basierend auf der Version bestimmen
let moduleName = ""; let moduleName = "";
let moduleType = ""; let moduleType = "";
@@ -26,6 +22,7 @@ const KabelModulStatus = ({ slot, kueCableBreak, isOnline, moduleVersion }) => {
moduleType = "___"; moduleType = "___";
} }
// Status nur prüfen, wenn der Slot aktiv ist (kueOnline für den Slot ist 1)
const isCableBreak = kueCableBreak[slot - 1] === 1; const isCableBreak = kueCableBreak[slot - 1] === 1;
const isAlarm1 = kueAlarm1[slot - 1] === 1; const isAlarm1 = kueAlarm1[slot - 1] === 1;
const isAlarm2 = kueAlarm2[slot - 1] === 1; const isAlarm2 = kueAlarm2[slot - 1] === 1;
@@ -33,13 +30,11 @@ const KabelModulStatus = ({ slot, kueCableBreak, isOnline, moduleVersion }) => {
return ( return (
<div className="border border-gray-400 w-10 h-20 flex flex-col"> <div className="border border-gray-400 w-10 h-20 flex flex-col">
{/* Slot-Nummer anzeigen */}
<div className="bg-littwin-blue flex-grow flex flex-col items-center justify-center text-white text-[10px]"> <div className="bg-littwin-blue flex-grow flex flex-col items-center justify-center text-white text-[10px]">
<div className="flex w-full mb-1 items-start justify-start">{slot}</div> <div className="flex w-full mb-1 items-start justify-start">{slot}</div>
<div className="text-[10px]">{moduleName}</div> <div className="text-[10px]">{moduleName}</div>
<div className="text-[10px]">{moduleType}</div> <div className="text-[10px]">{moduleType}</div>
</div> </div>
{/* Status-Anzeige */}
<div <div
className={`w-full h-2/6 ${ className={`w-full h-2/6 ${
isCableBreak || isAlarm1 || isAlarm2 || groundFault isCableBreak || isAlarm1 || isAlarm2 || groundFault

View File

@@ -8,7 +8,7 @@ function MyApp({ Component, pageProps }) {
// Client-seitige Logik kann hier hinzugefügt werden // Client-seitige Logik kann hier hinzugefügt werden
useEffect(() => { useEffect(() => {
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
console.log("Client-side logic can run here."); //console.log("Client-side logic can run here.");
} }
}, []); }, []);

View File

@@ -166,21 +166,28 @@ function Dashboard() {
setError("Konnte die Variablen nicht laden: " + error.message); setError("Konnte die Variablen nicht laden: " + error.message);
}); });
}, []); }, []);
//---------------------------------------------------
useEffect(() => { useEffect(() => {
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
const updateData = () => { const updateData = () => {
loadWindowVariables() loadWindowVariables()
.then(() => { .then(() => {
//console.log("Updating last20Messages:", window.last20Messages);
setLast20Messages(parseMessages(window.last20Messages || "")); setLast20Messages(parseMessages(window.last20Messages || ""));
setIp(window.ip || ""); setIp(window.ip || "");
setSubnet(window.subnet || ""); setSubnet(window.subnet || "");
setGateway(window.gateway || ""); setGateway(window.gateway || "");
setAppVersion(window.appVersion || ""); setAppVersion(window.appVersion || "");
// Prüfen, ob der Slot in kueOnline aktiv ist, bevor kueCableBreak gesetzt wird
const cableBreakArray = Array.isArray(window.kueCableBreak) const cableBreakArray = Array.isArray(window.kueCableBreak)
? window.kueCableBreak.map(Number) ? window.kueCableBreak.map((value, index) =>
: (window.kueCableBreak || "").split(",").map(Number); window.kueOnline[index] === 1 ? Number(value) : 0
)
: (window.kueCableBreak || "")
.split(",")
.map((value, index) =>
window.kueOnline[index] === 1 ? Number(value) : 0
);
setKueCableBreak(cableBreakArray); setKueCableBreak(cableBreakArray);
const onlineArray = Array.isArray(window.kueOnline) const onlineArray = Array.isArray(window.kueOnline)
@@ -202,11 +209,15 @@ function Dashboard() {
return () => clearInterval(intervalId); return () => clearInterval(intervalId);
} }
}, []); }, []);
//---------------------------------------------------
const handleModuleClick = (rackNumber) => { const handleModuleClick = (rackNumber) => {
// Navigiere zu /kabelueberwachung und übermittle den rackNumber als Parameter // Navigiere zu /kabelueberwachung und übermittle den rackNumber als Parameter
router.push(`/kabelueberwachung?rack=${rackNumber}`); router.push(`/kabelueberwachung?rack=${rackNumber}`);
}; };
// app/dashboard/page.jsx
// app/dashboard/page.jsx
const renderBaugruppentraeger = () => { const renderBaugruppentraeger = () => {
const baugruppen = []; const baugruppen = [];
const numBaugruppen = Math.ceil(kueOnline.length / 8); const numBaugruppen = Math.ceil(kueOnline.length / 8);
@@ -219,27 +230,21 @@ function Dashboard() {
<div className="flex gap-1"> <div className="flex gap-1">
{slots.map((version, index) => { {slots.map((version, index) => {
const slotNumber = i * 8 + index + 1; const slotNumber = i * 8 + index + 1;
const isSlotOnline = kueOnline[slotNumber - 1] === 1; // Prüfe, ob der Slot online ist
const moduleVersion = window.kueVersion const moduleVersion = window.kueVersion
? window.kueVersion[slotNumber - 1] ? window.kueVersion[slotNumber - 1]
: version; : version;
const hasAlarm1 = kueAlarm1.includes(slotNumber);
const hasAlarm2 = kueAlarm2.includes(slotNumber);
const hasCableBreak = kueCableBreak.includes(slotNumber);
const alarmClass =
hasAlarm1 || hasAlarm2 || hasCableBreak
? "bg-red-500"
: "bg-white";
return ( return (
<div <div
key={slotNumber} key={slotNumber}
className={`cursor-pointer ${alarmClass}`} // Sicherstellen, dass cursor-pointer hier verwendet wird className="cursor-pointer"
onClick={() => handleModuleClick(i + 1)} // Bei Klick navigieren onClick={() => handleModuleClick(i + 1)}
> >
<KabelModulStatus <KabelModulStatus
slot={slotNumber} slot={slotNumber}
isOnline={version !== 0} // Prüfen, ob ein Modul online ist isOnline={isSlotOnline} // Online-Status weitergeben
moduleVersion={moduleVersion} moduleVersion={moduleVersion}
kueCableBreak={kueCableBreak} kueCableBreak={kueCableBreak}
/> />
@@ -253,6 +258,7 @@ function Dashboard() {
return baugruppen; return baugruppen;
}; };
return ( return (
<div className="flex flex-col p-4"> <div className="flex flex-col p-4">
{/* Letzte Meldungen - Titel und Icon Bereich */} {/* Letzte Meldungen - Titel und Icon Bereich */}

View File

@@ -1,17 +1,147 @@
var kueOnline=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; /* var kueOnline = [
var kueValid=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
]; */
/* var kueValid = [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
]; */
/* var kueID = [
"FTZ_2",
"B23",
"Kabel 3",
"Kabel 4",
"Kabel 5",
"Kabel 6",
"FTZ4562",
"Kabel 8",
"12344",
"Kabel 10",
"Kabel 11",
"Kabel 12",
"Kabel 13",
"Kabel 14",
"Kabel 15",
"H56-77",
"Kabel 17",
"Kabel 18",
"Kabel 19",
"Kabel 20",
"Kabel 21",
"Kabel 22",
"Kabel 23",
"Kabel 24",
"Kabel 25",
"Kabel 26",
"Kabel 27",
"Kabel 28",
"Kabel 29",
"Kabel 30",
"Kabel 31",
"Kabel 32",
];
var kueName = [
"Kabel_2",
"Petersfehn",
"Kabel 3",
"Kabel 4",
"Kabel 5",
"Kabel 6",
"Melanie",
"Kabel 8",
"Merle",
"Kabel 10",
"Kabel 11",
"Kabel 12",
"Kabel 13",
"Kabel 14",
"Kabel 15",
"Daniela",
"Kabel 17",
"Kabel 18",
"Kabel 19",
"Kabel 20",
"Kabel 21",
"Kabel 22",
"Kabel 23",
"Kabel 24",
"Kabel 25",
"Kabel 26",
"Kabel 27",
"Kabel 28",
"Kabel 29",
"Kabel 30",
"Kabel 31",
"Kabel 32",
]; */
/* var kueVersion = [
419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419,
]; */
var kueID=['FTZ_2','B23','Kabel 3','Kabel 4','Kabel 5','Kabel 6','FTZ4562','Kabel 8','12344','Kabel 10','Kabel 11','Kabel 12','Kabel 13','Kabel 14','Kabel 15','H56-77','Kabel 17','Kabel 18','Kabel 19','Kabel 20','Kabel 21','Kabel 22','Kabel 23','Kabel 24','Kabel 25','Kabel 26','Kabel 27','Kabel 28','Kabel 29','Kabel 30','Kabel 31','Kabel 32']; var tdrAtten = [
var kueName=['Kabel_2','Petersfehn','Kabel 3','Kabel 4','Kabel 5','Kabel 6','Melanie','Kabel 8','Merle','Kabel 10','Kabel 11','Kabel 12','Kabel 13','Kabel 14','Kabel 15','Daniela','Kabel 17','Kabel 18','Kabel 19','Kabel 20','Kabel 21','Kabel 22','Kabel 23','Kabel 24','Kabel 25','Kabel 26','Kabel 27','Kabel 28','Kabel 29','Kabel 30','Kabel 31','Kabel 32']; 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0,
var kueVersion=[419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419]; 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0,
2.0, 2.0,
];
var tdrAtten=[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0]; var tdrPulse = [
var tdrPulse=[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,
var tdrSpeed=[100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100]; 0, 0, 0, 0, 0, 0,
var tdrAmp=[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]; ];
var tdrTrigger=[80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80]; var tdrSpeed = [
var tdrLocation=[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]; 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
var tdrActive=[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]; 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
var tdrLast=['2024-10-17 07:51:54:000','2024-09-30 08:38:50:000','?','?','?','?','?','?','2024-09-30 08:36:43:000','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?']; 100, 100,
];
var tdrAmp = [
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,
];
var tdrTrigger = [
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
];
var tdrLocation = [
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,
];
var tdrActive = [
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,
];
var tdrLast = [
"2024-10-17 07:51:54:000",
"2024-09-30 08:38:50:000",
"?",
"?",
"?",
"?",
"?",
"?",
"2024-09-30 08:36:43:000",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
"?",
];

View File

@@ -62,7 +62,6 @@ export async function loadWindowVariables() {
const scripts = [ const scripts = [
"de.js", "de.js",
"kueConfig.js",
"kueData.js", "kueData.js",
"kueDetailTdr.js", "kueDetailTdr.js",
"Start.js", "Start.js",