style: Layout-Anpassung für Einstellungsseite (Ausrichtung rechts oben)

- Inhalte in GeneralSettings und OPCUAInterfaceSettings nicht mehr zentriert
- Layout konsistent mit anderen Seiten (rechts oben durch max-w-5xl + mr-auto)
- Bessere Ausrichtung für Desktop-Auflösung und altes Laptop-Design
This commit is contained in:
ISA
2025-04-23 13:21:31 +02:00
parent 549288ebb9
commit 4fa534ee42
4 changed files with 74 additions and 34 deletions

View File

@@ -1,10 +1,13 @@
"use client"; "use client";
// /components/main/kabelueberwachung/kue705FO/modals/TdrEinstellung.tsx
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
declare global { declare global {
interface Window { interface Window {
win_tdrActive?: number[]; win_tdrActive?: number[];
win_tdrAmp?: string[];
win_tdrPulse?: string[];
win_tdrTrigger?: string[];
} }
} }
@@ -14,25 +17,41 @@ interface Props {
export default function TdrEinstellung({ slot }: Props) { export default function TdrEinstellung({ slot }: Props) {
const [tdrActive, setTdrActive] = useState(false); const [tdrActive, setTdrActive] = useState(false);
const [params, setParams] = useState({ const [tdrData, setTdrData] = useState({
verstarkung: "", verstarkung: "",
pulsweite: "", pulsweite: "",
trigger: "", trigger: "",
}); });
useEffect(() => { useEffect(() => {
if ( if (typeof window !== "undefined") {
typeof window !== "undefined" && if (Array.isArray(window.win_tdrActive)) {
Array.isArray(window.win_tdrActive) && const status = parseInt(String(window.win_tdrActive[slot]));
typeof window.win_tdrActive[slot] !== "undefined" setTdrActive(status === 1);
) { }
const status = parseInt(String(window.win_tdrActive[slot])); setTdrData({
setTdrActive(status === 1); verstarkung: window.win_tdrAmp?.[slot] ?? "",
} else { pulsweite: window.win_tdrPulse?.[slot] ?? "",
console.warn("⚠️ win_tdrActive ist nicht definiert oder Slot ungültig"); trigger: window.win_tdrTrigger?.[slot] ?? "",
});
} }
}, [slot]); }, [slot]);
const handleSave = () => {
const v = tdrData.verstarkung.trim();
const p = tdrData.pulsweite.trim();
const t = tdrData.trigger.trim();
if (!v || !p || !t) {
alert("Bitte alle Felder ausfüllen.");
return;
}
const url = `/CPL?KTT${slot}=0&V=${v}&P=${p}&T=${t}`;
alert(`Sende: ${url}`);
window.location.href = url;
};
return ( return (
<div className="space-y-4 text-sm laptop:text-base"> <div className="space-y-4 text-sm laptop:text-base">
<h2 className="text-base laptop:text-lg font-semibold"> <h2 className="text-base laptop:text-lg font-semibold">
@@ -62,26 +81,47 @@ 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">
<input <div>
placeholder="Verstärkung" <label className="block text-sm font-medium mb-1">Verstärkung</label>
value={params.verstarkung} <input
onChange={(e) => value={tdrData.verstarkung}
setParams({ ...params, verstarkung: e.target.value }) onChange={(e) =>
} setTdrData({ ...tdrData, verstarkung: e.target.value })
className="border px-2 py-1 rounded" }
/> className="border px-2 py-1 rounded w-full"
<input />
placeholder="Pulsweite" </div>
value={params.pulsweite}
onChange={(e) => setParams({ ...params, pulsweite: e.target.value })} <div>
className="border px-2 py-1 rounded" <label className="block text-sm font-medium mb-1">Pulsweite</label>
/> <input
<input value={tdrData.pulsweite}
placeholder="Trigger" onChange={(e) =>
value={params.trigger} setTdrData({ ...tdrData, pulsweite: e.target.value })
onChange={(e) => setParams({ ...params, trigger: e.target.value })} }
className="border px-2 py-1 rounded" className="border px-2 py-1 rounded w-full"
/> />
</div>
<div>
<label className="block text-sm font-medium mb-1">Trigger</label>
<input
value={tdrData.trigger}
onChange={(e) =>
setTdrData({ ...tdrData, trigger: e.target.value })
}
className="border px-2 py-1 rounded w-full"
/>
</div>
</div>
<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"
>
💾 Einstellungen senden
</button>
</div> </div>
</div> </div>
); );

View File

@@ -65,7 +65,7 @@ const GeneralSettings: React.FC = () => {
//------------------------------- //-------------------------------
return ( return (
<div className="p-2 md:p-3 bg-gray-100 max-w-2xl mx-auto"> <div className="p-6 md:p-3 bg-gray-100 max-w-5xl mr-auto">
<h2 className="text-sm md:text-md font-bold mb-2"> <h2 className="text-sm md:text-md font-bold mb-2">
Allgemeine Einstellungen Allgemeine Einstellungen
</h2> </h2>

View File

@@ -36,7 +36,7 @@ export default function OPCUAInterfaceSettings() {
}; };
return ( return (
<div className="max-w-lg mx-auto p-2 bg-gray-100 shadow-md rounded-lg"> <div className="p-6 md:p-3 bg-gray-100 max-w-5xl mr-auto ">
<h2 className="text-base font-semibold mb-3"> <h2 className="text-base font-semibold mb-3">
OPCUA Server Einstellungen OPCUA Server Einstellungen
</h2> </h2>

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.257"; const webVersion = "1.6.258";
export default webVersion; export default webVersion;