Files
CPLv4.0/components/main/kabelueberwachung/kue705FO/modals/TdrEinstellung.tsx
ISA 549288ebb9 feat: TDR-Funktion wird jetzt aus window.win_tdrActive gelesen
- TDR-Einstellung liest TDR-Status direkt aus kueDataX.js via window.win_tdrActive
- Schalter (Switch) zeigt Zustand korrekt an (aktiviert/deaktiviert)
- TypeScript-Typen für window-Objekt erweitert (declare global)
- Verzicht auf fetch → statisches Einlesen optimiert für Produktionsumgebung
- Build läuft erfolgreich mit `npm run build`
2025-04-23 12:03:17 +02:00

89 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import React, { useState, useEffect } from "react";
declare global {
interface Window {
win_tdrActive?: number[];
}
}
interface Props {
slot: number;
}
export default function TdrEinstellung({ slot }: Props) {
const [tdrActive, setTdrActive] = useState(false);
const [params, setParams] = useState({
verstarkung: "",
pulsweite: "",
trigger: "",
});
useEffect(() => {
if (
typeof window !== "undefined" &&
Array.isArray(window.win_tdrActive) &&
typeof window.win_tdrActive[slot] !== "undefined"
) {
const status = parseInt(String(window.win_tdrActive[slot]));
setTdrActive(status === 1);
} else {
console.warn("⚠️ win_tdrActive ist nicht definiert oder Slot ungültig");
}
}, [slot]);
return (
<div className="space-y-4 text-sm laptop:text-base">
<h2 className="text-base laptop:text-lg font-semibold">
TDR-Einstellung Steckplatz {slot + 1}
</h2>
<div className="flex items-center gap-3">
<span className="text-sm font-medium">TDR-Funktion:</span>
<button
type="button"
role="switch"
aria-checked={tdrActive}
onClick={() => setTdrActive(!tdrActive)}
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 ${
tdrActive ? "bg-green-500" : "bg-gray-300"
}`}
>
<span
className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform duration-200 ${
tdrActive ? "translate-x-6" : "translate-x-1"
}`}
/>
</button>
<span className="text-sm text-gray-600">
{tdrActive ? "aktiviert" : "deaktiviert"}
</span>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<input
placeholder="Verstärkung"
value={params.verstarkung}
onChange={(e) =>
setParams({ ...params, verstarkung: e.target.value })
}
className="border px-2 py-1 rounded"
/>
<input
placeholder="Pulsweite"
value={params.pulsweite}
onChange={(e) => setParams({ ...params, pulsweite: e.target.value })}
className="border px-2 py-1 rounded"
/>
<input
placeholder="Trigger"
value={params.trigger}
onChange={(e) => setParams({ ...params, trigger: e.target.value })}
className="border px-2 py-1 rounded"
/>
</div>
</div>
);
}