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

View File

@@ -102,25 +102,25 @@ const GeneralSettings: React.FC = () => {
</div> </div>
{/* Systemzeit */} {/* Systemzeit */}
<div className="flex flex-col md:flex-row md:items-center gap-1 col-span-2"> <div className="col-span-2">
<div className="flex-1"> <label className="block text-xs md:text-sm font-medium mb-1">
<label className="block text-xs md:text-sm font-medium"> Systemzeit:
Systemzeit: </label>
</label> <div className="flex flex-row gap-2">
<input <input
type="text" type="text"
className="border border-gray-300 rounded h-8 p-1 w-full text-xs" className="border border-gray-300 rounded h-8 p-1 w-full text-xs"
value={systemUhr} value={systemUhr}
disabled 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> </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> </div>
{/* Netzwerk */} {/* Netzwerk */}
@@ -161,7 +161,7 @@ const GeneralSettings: React.FC = () => {
{isAdminLoggedIn ? ( {isAdminLoggedIn ? (
<button <button
type="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} onClick={logoutAdmin}
> >
Admin abmelden Admin abmelden
@@ -185,7 +185,7 @@ const GeneralSettings: React.FC = () => {
/> />
<button <button
type="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} onClick={handleLogin}
> >
Admin anmelden 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"> <div className="col-span-2 flex flex-wrap md:justify-between gap-1 mt-2">
<button <button
type="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()} onClick={() => handleReboot()}
> >
Neustart CPL Neustart CPL
@@ -213,7 +213,7 @@ const GeneralSettings: React.FC = () => {
<button <button
type="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={() => onClick={() =>
handleGeneralSubmit( handleGeneralSubmit(
{ {

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