Fehler bei 'onChange' in Verbindung mit 'ExpansionPanel'

Hallo,

ich habe etwas entdeckt, das m.E. ein Fehler ist.

Ich habe Module (z.B. GitHub - demel42/IPSymconWiffi: decode data from Wifi (stall.biz)), die auf der Konfigurationsseite
a) ein Auswahlfeld (‚Select‘), das ein ‚onChange‘-Aufruf haben, dem Felder der Maske übergeben werden, u.a. eine Variable ‚use_fields‘
b) ‚use_fields‘ ist Teil eines ‚ExpansionPanel‘, das am Anfang nicht geöffnet ist (‚expanded‘ ist nicht gesetzt)

Wenn ich die das ‚Select‘-Field ändere, also das ‚onChange‘ ausgelöst wird, gibt es diese Fehlermeldung

Der Fehler tritt nicht auf, wenn das ‚ExpansionPanel‘ am Anfang einmal geöffnet wird, egal ob manuell oder ‚expanded‘ = true

Es macht den Eindruck als würden Felder in einem nicht expandierten ExpasionPanel nur bei Bedarf erzeugt werden.

Ich bin mir ziemlich sicher, das es vor einigen Wochen noch nicht aufgetreten ist (sonst wäre das Dr. Niels beim Einreichen des Moduls bestimmt aufgefallen :D).

Fehler tritt auf mit IP-Symcon 5.4, Raspberry Pi, 31.01.2020, 011cf2caa315 und IP-Symcon 5.3, Ubuntu, 18.01.2020, 9f7a7907472e

Gruß
demel

@paresy: ist das von mir beschriebene Verhalten so gewollt oder ein Big?

Hallo demel,

das ist ein Bug. Wir müssten zum Fixen allerdings einiges ändern, daher wird der Fix wohl erst zur 5.4 kommen. Bis dahin hast du mehrere Möglichkeiten damit umzugehen:

  • Platziere das Element, welches die Variable nutzt in der gleichen Tiefe (oder tiefer) in deiner ExpansionPanel-Verschachtelung. Damit ist sichergestellt, dass die erforderlichen Werte vorhanden sind

  • Du kannst in der onChange-Methode per isset prüfen, ob die Variable existiert. Falls nicht, setzt du sie auf einen Standardwert. Je nachdem, wie deine Form aussieht, wird dies ja wahrscheinlich entweder die Property (im elements-Bereich) sein oder eine Konstante (im actions-Bereich)

Hallo Dr. Niels,

als Workaround nutze ich, das ich das Expansion-Panel geöffnet starte.
Also kein Problem mit einem Fix erst in 5.4.

Gruß
demel

Hallo demel,

ich probiere gerade dein Modul aus dem Store aus und erhalte den gleichen Fehler:

Kann ich das Problem unter 5.5 auch irgendwie umgehen?

Burkhard

Die beschriebenen Workarounds sollten weiterhin funktionieren. Ich muss zugeben, ich habe mich bisher nicht an diese Baustelle gesetzt. Zur 5.5 wird das wohl auch nichts mehr.