feat: TDR-Eingabefelder aktiviert, Werte editierbar mit Einheiten dB und m/µs

This commit is contained in:
ISA
2025-04-24 09:01:43 +02:00
parent 220015c011
commit a18d5b9640
2 changed files with 46 additions and 50 deletions

View File

@@ -1,53 +1,34 @@
"use client"; "use client";
// /components/main/kabelueberwachung/kue705FO/modals/TdrEinstellung.tsx // /components/main/kabelueberwachung/kue705FO/modals/TdrEinstellung.tsx
import React, { useState, useEffect } from "react";
declare global { import React, { useState } from "react";
interface Window { import { useSelector } from "react-redux";
win_tdrActive?: number[]; import { RootState } from "../../../../../redux/store";
win_tdrAmp?: string[];
win_tdrPulse?: string[];
win_tdrTrigger?: string[];
}
}
interface Props { interface Props {
slot: number; slot: number;
} }
export default function TdrEinstellung({ slot }: Props) { export default function TdrEinstellung({ slot }: Props) {
const [tdrActive, setTdrActive] = useState(false); const tdrSlice = useSelector((state: RootState) => state.kueDataSlice);
// Lokaler editierbarer Zustand
const [tdrData, setTdrData] = useState({ const [tdrData, setTdrData] = useState({
verstarkung: "", verstarkung: tdrSlice.tdrAtten?.[slot] ?? "",
pulsweite: "", pulsweite: tdrSlice.tdrSpeed?.[slot] ?? "",
trigger: "", trigger: tdrSlice.tdrTrigger?.[slot] ?? "",
}); });
useEffect(() => { const [tdrActive, setTdrActive] = useState(false); // Optional: aus Redux ergänzbar
if (typeof window !== "undefined") {
if (Array.isArray(window.win_tdrActive)) {
const status = parseInt(String(window.win_tdrActive[slot]));
setTdrActive(status === 1);
}
setTdrData({
verstarkung: window.win_tdrAmp?.[slot] ?? "",
pulsweite: window.win_tdrPulse?.[slot] ?? "",
trigger: window.win_tdrTrigger?.[slot] ?? "",
});
}
}, [slot]);
const handleSave = () => { const handleSave = () => {
const v = tdrData.verstarkung.trim(); const { verstarkung, pulsweite, trigger } = tdrData;
const p = tdrData.pulsweite.trim(); if (!verstarkung.trim() || !pulsweite.trim() || !trigger.trim()) {
const t = tdrData.trigger.trim();
if (!v || !p || !t) {
alert("Bitte alle Felder ausfüllen."); alert("Bitte alle Felder ausfüllen.");
return; return;
} }
const url = `/CPL?KTT${slot}=0&V=${v}&P=${p}&T=${t}`; const url = `/CPL?KTT${slot}=0&V=${verstarkung.trim()}&P=${pulsweite.trim()}&T=${trigger.trim()}`;
alert(`Sende: ${url}`); alert(`Sende: ${url}`);
window.location.href = url; window.location.href = url;
}; };
@@ -81,28 +62,43 @@ export default function TdrEinstellung({ slot }: Props) {
</div> </div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{/* TDR Dämpfung */}
<div> <div>
<label className="block text-sm font-medium mb-1">Verstärkung</label> <label className="block text-sm font-medium mb-1">TDR Dämpfung</label>
<input <div className="relative">
value={tdrData.verstarkung} <input
onChange={(e) => value={tdrData.verstarkung}
setTdrData({ ...tdrData, verstarkung: e.target.value }) onChange={(e) =>
} setTdrData({ ...tdrData, verstarkung: e.target.value })
className="border px-2 py-1 rounded w-full" }
/> className="border px-2 py-1 rounded w-full pr-10"
/>
<span className="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-gray-500">
dB
</span>
</div>
</div> </div>
{/* Geschwindigkeit */}
<div> <div>
<label className="block text-sm font-medium mb-1">Pulsweite</label> <label className="block text-sm font-medium mb-1">
<input Geschwindigkeit
value={tdrData.pulsweite} </label>
onChange={(e) => <div className="relative">
setTdrData({ ...tdrData, pulsweite: e.target.value }) <input
} value={tdrData.pulsweite}
className="border px-2 py-1 rounded w-full" onChange={(e) =>
/> setTdrData({ ...tdrData, pulsweite: e.target.value })
}
className="border px-2 py-1 rounded w-full pr-14"
/>
<span className="absolute right-2 top-1/2 -translate-y-1/2 text-xs text-gray-500">
m/µs
</span>
</div>
</div> </div>
{/* Trigger */}
<div> <div>
<label className="block text-sm font-medium mb-1">Trigger</label> <label className="block text-sm font-medium mb-1">Trigger</label>
<input <input
@@ -118,7 +114,7 @@ export default function TdrEinstellung({ slot }: Props) {
<div className="pt-4 flex justify-end"> <div className="pt-4 flex justify-end">
<button <button
onClick={handleSave} onClick={handleSave}
className="bg-blue-600 text-white px-4 py-2 rounded shadow hover:bg-blue-700 transition" className="bg-blue-600 text-white px-4 py-2 rounded shadow hover:bg-blue-700"
> >
💾 Einstellungen senden 💾 Einstellungen senden
</button> </button>

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/ */
const webVersion = "1.6.263"; const webVersion = "1.6.264";
export default webVersion; export default webVersion;