feat: TDR-Eingabefelder aktiviert, Werte editierbar mit Einheiten dB und m/µs
This commit is contained in:
@@ -1,53 +1,34 @@
|
||||
"use client";
|
||||
// /components/main/kabelueberwachung/kue705FO/modals/TdrEinstellung.tsx
|
||||
import React, { useState, useEffect } from "react";
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
win_tdrActive?: number[];
|
||||
win_tdrAmp?: string[];
|
||||
win_tdrPulse?: string[];
|
||||
win_tdrTrigger?: string[];
|
||||
}
|
||||
}
|
||||
import React, { useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { RootState } from "../../../../../redux/store";
|
||||
|
||||
interface Props {
|
||||
slot: number;
|
||||
}
|
||||
|
||||
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({
|
||||
verstarkung: "",
|
||||
pulsweite: "",
|
||||
trigger: "",
|
||||
verstarkung: tdrSlice.tdrAtten?.[slot] ?? "",
|
||||
pulsweite: tdrSlice.tdrSpeed?.[slot] ?? "",
|
||||
trigger: tdrSlice.tdrTrigger?.[slot] ?? "",
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
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 [tdrActive, setTdrActive] = useState(false); // Optional: aus Redux ergänzbar
|
||||
|
||||
const handleSave = () => {
|
||||
const v = tdrData.verstarkung.trim();
|
||||
const p = tdrData.pulsweite.trim();
|
||||
const t = tdrData.trigger.trim();
|
||||
|
||||
if (!v || !p || !t) {
|
||||
const { verstarkung, pulsweite, trigger } = tdrData;
|
||||
if (!verstarkung.trim() || !pulsweite.trim() || !trigger.trim()) {
|
||||
alert("Bitte alle Felder ausfüllen.");
|
||||
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}`);
|
||||
window.location.href = url;
|
||||
};
|
||||
@@ -81,28 +62,43 @@ export default function TdrEinstellung({ slot }: Props) {
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
{/* TDR Dämpfung */}
|
||||
<div>
|
||||
<label className="block text-sm font-medium mb-1">Verstärkung</label>
|
||||
<input
|
||||
value={tdrData.verstarkung}
|
||||
onChange={(e) =>
|
||||
setTdrData({ ...tdrData, verstarkung: e.target.value })
|
||||
}
|
||||
className="border px-2 py-1 rounded w-full"
|
||||
/>
|
||||
<label className="block text-sm font-medium mb-1">TDR Dämpfung</label>
|
||||
<div className="relative">
|
||||
<input
|
||||
value={tdrData.verstarkung}
|
||||
onChange={(e) =>
|
||||
setTdrData({ ...tdrData, verstarkung: e.target.value })
|
||||
}
|
||||
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>
|
||||
|
||||
{/* Geschwindigkeit */}
|
||||
<div>
|
||||
<label className="block text-sm font-medium mb-1">Pulsweite</label>
|
||||
<input
|
||||
value={tdrData.pulsweite}
|
||||
onChange={(e) =>
|
||||
setTdrData({ ...tdrData, pulsweite: e.target.value })
|
||||
}
|
||||
className="border px-2 py-1 rounded w-full"
|
||||
/>
|
||||
<label className="block text-sm font-medium mb-1">
|
||||
Geschwindigkeit
|
||||
</label>
|
||||
<div className="relative">
|
||||
<input
|
||||
value={tdrData.pulsweite}
|
||||
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>
|
||||
|
||||
{/* Trigger */}
|
||||
<div>
|
||||
<label className="block text-sm font-medium mb-1">Trigger</label>
|
||||
<input
|
||||
@@ -118,7 +114,7 @@ export default function TdrEinstellung({ slot }: Props) {
|
||||
<div className="pt-4 flex justify-end">
|
||||
<button
|
||||
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
|
||||
</button>
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
||||
|
||||
*/
|
||||
const webVersion = "1.6.263";
|
||||
const webVersion = "1.6.264";
|
||||
export default webVersion;
|
||||
|
||||
Reference in New Issue
Block a user