Aderbruch in dashboard anzeigen bei Status
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
#Next.js Webserver
|
#Next.js Webserver
|
||||||
#NEXT_PUBLIC_API_BASE_URL=http://localhost:3000
|
NEXT_PUBLIC_API_BASE_URL=http://localhost:3000
|
||||||
#CPL Webserver
|
#CPL Webserver
|
||||||
NEXT_PUBLIC_API_BASE_URL=https://10.10.0.118:443
|
#NEXT_PUBLIC_API_BASE_URL=https://10.10.0.118:443
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ function Dashboard() {
|
|||||||
const [gateway, setGateway] = useState("");
|
const [gateway, setGateway] = useState("");
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
const [error, setError] = useState(null);
|
const [error, setError] = useState(null);
|
||||||
|
const [kueCableBreak, setKueCableBreak] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadWindowVariables(apiUrl)
|
loadWindowVariables(apiUrl)
|
||||||
@@ -43,6 +44,33 @@ function Dashboard() {
|
|||||||
setLoading(false);
|
setLoading(false);
|
||||||
});
|
});
|
||||||
}, [apiUrl]);
|
}, [apiUrl]);
|
||||||
|
useEffect(() => {
|
||||||
|
loadWindowVariables(apiUrl)
|
||||||
|
.then(() => {
|
||||||
|
if (window.kueCableBreak && Array.isArray(window.kueCableBreak)) {
|
||||||
|
// Prüfe, ob window.kueCableBreak ein Array ist
|
||||||
|
const cableBreakArray = window.kueCableBreak.map(Number);
|
||||||
|
setKueCableBreak(cableBreakArray); // Array für kueCableBreak
|
||||||
|
} else if (typeof window.kueCableBreak === "string") {
|
||||||
|
// Falls es ein String ist, splitte den String und mappe ihn in ein Array
|
||||||
|
const cableBreakArray = window.kueCableBreak.split(",").map(Number);
|
||||||
|
setKueCableBreak(cableBreakArray);
|
||||||
|
} else {
|
||||||
|
console.error(
|
||||||
|
"Konnte kueCableBreak nicht finden oder es ist kein gültiges Array/String."
|
||||||
|
);
|
||||||
|
setError(
|
||||||
|
"Konnte kueCableBreak nicht finden oder es ist kein gültiges Array/String."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error("Fehler beim Laden des Skripts:", error);
|
||||||
|
setError(error);
|
||||||
|
setLoading(false);
|
||||||
|
});
|
||||||
|
}, [apiUrl]);
|
||||||
|
|
||||||
const parseMessages = (messages) => {
|
const parseMessages = (messages) => {
|
||||||
messages = messages
|
messages = messages
|
||||||
@@ -93,38 +121,30 @@ function Dashboard() {
|
|||||||
const renderBaugruppentraeger = () => {
|
const renderBaugruppentraeger = () => {
|
||||||
const baugruppen = [];
|
const baugruppen = [];
|
||||||
|
|
||||||
// Dynamisch berechnen, wie viele Baugruppenträger benötigt werden, basierend auf der Länge von kueOnline
|
// Adjust based on actual length of kueOnline
|
||||||
const numBaugruppen = Math.ceil(kueOnline.length / 8);
|
const numBaugruppen = Math.ceil(kueOnline.length / 8);
|
||||||
|
|
||||||
for (let i = 0; i < numBaugruppen; i++) {
|
for (let i = 0; i < numBaugruppen; i++) {
|
||||||
const slots = kueOnline.slice(i * 8, (i + 1) * 8);
|
const slots = kueOnline.slice(i * 8, (i + 1) * 8);
|
||||||
|
|
||||||
// Prüfen, ob der Baugruppenträger überhaupt Zahlen oder "0" enthält
|
baugruppen.push(
|
||||||
const containsNumbersOrZero = slots.some(
|
<div key={i} className="flex bg-white shadow-md rounded-lg">
|
||||||
(version) => version !== "" && version !== null && version !== undefined
|
<div className="flex gap-1">
|
||||||
);
|
{slots.map((version, index) => {
|
||||||
|
const slotNumber = i * 8 + index + 1;
|
||||||
|
|
||||||
if (containsNumbersOrZero) {
|
return (
|
||||||
baugruppen.push(
|
<Kue705_FO
|
||||||
<div key={i} className="flex bg-white shadow-md rounded-lg ">
|
key={slotNumber}
|
||||||
<div className="flex gap-1">
|
slot={slotNumber}
|
||||||
{slots.map((version, index) => {
|
isOnline={version === 1} // Only pass isOnline true if the slot is connected
|
||||||
const slotNumber = i * 8 + index + 1;
|
kueCableBreak={kueCableBreak}
|
||||||
return version !== 0 ? (
|
/>
|
||||||
<Kue705_FO key={slotNumber} slot={slotNumber} />
|
);
|
||||||
) : (
|
})}
|
||||||
<div
|
|
||||||
key={slotNumber}
|
|
||||||
className="w-10 h-20 flex items-center justify-center border border-gray-300"
|
|
||||||
>
|
|
||||||
<span className="text-xs text-gray-500">Leer</span>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
</div>
|
||||||
}
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return baugruppen;
|
return baugruppen;
|
||||||
@@ -237,7 +257,7 @@ function Dashboard() {
|
|||||||
{loading ? (
|
{loading ? (
|
||||||
<p>Lädt...</p>
|
<p>Lädt...</p>
|
||||||
) : error ? (
|
) : error ? (
|
||||||
<p className="text-red-500">{error}</p>
|
<p className="text-red-500">{error.toString()}</p>
|
||||||
) : (
|
) : (
|
||||||
renderBaugruppentraeger()
|
renderBaugruppentraeger()
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,19 +1,31 @@
|
|||||||
// components/Kue705_FO.jsx
|
// components/Kue705_FO.jsx
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
const Kue705_FO = ({ slot }) => {
|
const Kue705_FO = ({ slot, kueCableBreak, isOnline }) => {
|
||||||
|
if (!isOnline) {
|
||||||
|
return (
|
||||||
|
<div className="border border-gray-400 w-10 h-20 flex items-center justify-center bg-gray-200">
|
||||||
|
<div className="text-xs text-gray-500">Leer</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const isCableBreak = kueCableBreak[slot - 1] === 1;
|
||||||
|
|
||||||
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">
|
||||||
{/* Erstes Kind, nimmt den restlichen Platz ein */}
|
{/* Erstes Kind, nimmt den restlichen Platz ein */}
|
||||||
<div className="bg-blue-500 flex-grow flex flex-col items-center justify-center text-white text-[10px]">
|
<div className="bg-blue-500 flex-grow flex flex-col items-center justify-center text-white text-[10px]">
|
||||||
<div className="flex w-full mb-1 items-start justify-start">
|
<div className="flex w-full mb-1 items-start justify-start">{slot}</div>
|
||||||
{slot}
|
|
||||||
</div>
|
|
||||||
<div className="text-[10px]">KÜ705</div>
|
<div className="text-[10px]">KÜ705</div>
|
||||||
<div className="text-[10px]">FO</div>
|
<div className="text-[10px]">FO</div>
|
||||||
</div>
|
</div>
|
||||||
{/* Die unteren Abschnitte behalten ihre festen Höhen */}
|
{/* Die unteren Abschnitte behalten ihre festen Höhen */}
|
||||||
<div className="bg-green-500 w-full h-2/6"></div>
|
<div
|
||||||
|
className={`w-full h-2/6 ${
|
||||||
|
isCableBreak ? "bg-red-500" : "bg-green-500"
|
||||||
|
}`}
|
||||||
|
></div>
|
||||||
<div className="bg-blue-500 w-full h-1/6"></div>
|
<div className="bg-blue-500 w-full h-1/6"></div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user