fix: Speicherintervall (KLO) wird jetzt korrekt gesendet und gespeichert

- Fehler behoben: Speicherintervall wurde nicht an CGI gesendet, wenn Schleifenintervall unverändert blieb
- Redux-Dispatch korrigiert: speicherintervall → memoryInterval angepasst
This commit is contained in:
ISA
2025-04-25 13:07:17 +02:00
parent c1ee13b7f0
commit 649f53d14e
3 changed files with 26 additions and 34 deletions

View File

@@ -18,7 +18,7 @@ interface HandleSaveParams {
untereSchleifenGrenzwerte: number[];
obereSchleifenGrenzwerte: number[];
schleifenintervall: number[];
speicherintervall: number[]; // ✅ NEU hinzugefügt
speicherintervall: number[];
originalValues: OriginalValues;
slot: number;
dispatch: (action: any) => void;
@@ -26,7 +26,6 @@ interface HandleSaveParams {
onClose: () => void;
}
// Vergleich: robust für Zahlen und Strings
const isDifferent = (a: any, b: any): boolean => {
const aNum = Number(a);
const bNum = Number(b);
@@ -87,26 +86,20 @@ const handleSave = async ({
schleifenintervall[slot],
originalValues.schleifenintervall[slot]
)
)
if (
isDifferent(
speicherintervall[slot],
originalValues.speicherintervall[slot]
)
) {
changesForFile.KME = speicherintervall[slot];
}
{
) {
changesForFile.KRI = schleifenintervall[slot];
}
if (
isDifferent(speicherintervall[slot], originalValues.speicherintervall[slot])
) {
changesForFile.KLO = speicherintervall[slot];
}
if (Object.keys(changesForFile).length > 0) {
const isDev = window.location.hostname === "localhost";
const isProd = !isDev;
if (isDev) {
// Entwicklung: interne Next.js API
for (const [key, value] of Object.entries(changesForFile)) {
const params = new URLSearchParams({
key: `win_kue${key}`,
@@ -127,11 +120,10 @@ const handleSave = async ({
}
if (isProd) {
// Produktion: echte CPL-Hardware CGI-Aufruf
const cgiParams = Object.entries(changesForFile)
.map(([key, value]) => `${key}${slot}=${encodeURIComponent(value)}`)
.join(";");
const url = `/CPL?KUEdetail.ACP&${cgiParams}`;
const url = `/CPL?/kabelueberwachung.html&${cgiParams}`;
console.log("📡 Sende an CPL (CGI) →", url);
@@ -150,7 +142,6 @@ const handleSave = async ({
}
}
// Redux und UI aktualisieren
onModulNameChange(ids[slot]);
dispatch(
@@ -161,6 +152,7 @@ const handleSave = async ({
untereSchleifenGrenzwerte: [...untereSchleifenGrenzwerte],
obereSchleifenGrenzwerte: [...obereSchleifenGrenzwerte],
schleifenintervall: [...schleifenintervall],
memoryInterval: [...speicherintervall],
})
);
} else {

View File

@@ -102,25 +102,25 @@ const GeneralSettings: React.FC = () => {
</div>
{/* Systemzeit */}
<div className="flex flex-col md:flex-row md:items-center gap-1 col-span-2">
<div className="flex-1">
<label className="block text-xs md:text-sm font-medium">
Systemzeit:
</label>
<div className="col-span-2">
<label className="block text-xs md:text-sm font-medium mb-1">
Systemzeit:
</label>
<div className="flex flex-row gap-2">
<input
type="text"
className="border border-gray-300 rounded h-8 p-1 w-full text-xs"
value={systemUhr}
disabled
/>
<button
type="button"
className="bg-littwin-blue text-white px-4 py-2 h-8 text-xs rounded whitespace-nowrap"
onClick={() => handleSetDateTime()}
>
Systemzeit übernehmen
</button>
</div>
<button
type="button"
className="bg-littwin-blue text-white px-2 py-1 rounded w-full md:w-auto text-xs"
onClick={() => handleSetDateTime()}
>
Systemzeit übernehmen
</button>
</div>
{/* Netzwerk */}
@@ -161,7 +161,7 @@ const GeneralSettings: React.FC = () => {
{isAdminLoggedIn ? (
<button
type="button"
className="bg-red-500 text-white px-2 py-1 rounded text-xs"
className="bg-littwin-blue text-white px-4 py-2 h-8 text-xs rounded whitespace-nowrap"
onClick={logoutAdmin}
>
Admin abmelden
@@ -185,7 +185,7 @@ const GeneralSettings: React.FC = () => {
/>
<button
type="button"
className="flex flex-row bg-littwin-blue text-white px-1 rounded text-xs whitespace-nowrap justify-center items-center "
className="bg-littwin-blue text-white px-4 py-2 h-8 text-xs rounded whitespace-nowrap"
onClick={handleLogin}
>
Admin anmelden
@@ -205,7 +205,7 @@ const GeneralSettings: React.FC = () => {
<div className="col-span-2 flex flex-wrap md:justify-between gap-1 mt-2">
<button
type="button"
className="bg-littwin-blue text-white px-2 py-1 rounded text-xs w-full md:w-auto"
className="bg-littwin-blue text-white px-4 py-2 h-8 text-xs rounded whitespace-nowrap"
onClick={() => handleReboot()}
>
Neustart CPL
@@ -213,7 +213,7 @@ const GeneralSettings: React.FC = () => {
<button
type="button"
className="bg-littwin-blue text-white px-2 py-1 rounded text-xs w-full md:w-auto"
className="bg-littwin-blue text-white px-4 py-2 h-8 text-xs rounded whitespace-nowrap"
onClick={() =>
handleGeneralSubmit(
{