readingsGroup - fehlende </tr> im html am Zeilenende?

Begonnen von Elektrolurch, 08 Februar 2023, 10:46:30

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo,

ich hatte immer wieder Probleme mit Safari auf dem iPhone, wenn über eine längere Zeit hinweg eine readingsGroup  dargestellt wurde. Die Seite reagierte dann einfach nicht mehr.
Apple hat nun mit einem der letzten Updates Safari stabiler gemacht, aber ich habe trotzdem mal versucht, eine mögliche Ursache zu finden.
Dabei ist mir folgendes aufgefallen:
In der Funktion readingsGroup_2html($;$) wird in der Hauptschleidfe

  foreach my $device (@{$devices}) {

Jede Tabellenzeile mit einem <tr> geöffnet, aber bis auf einige Sonderfälle niemals mehr mit einem </tr> geschlossen.
Manche Browser sind da wohl fehlertolerant, Safari leider in der Vergangenheit nicht.
Ich habe mal folgendes geändert:
1. Jede ausgegebene Tabellenzeile wird zusätzlich hinter dem </td> mit einem \n in den html-Code ausgegeben, so dass der html-Code besser lesbar wird.
2. Ich habe eine $in_table Variable eingeführt, die mit dem ersten Schleifendurchlauf gesetzt wird und dann am Anfang immer ein "</tr>\n" in den html-Code einfügt.
3. Ich habe noch einige Korrekturen eingefügt, z.B. bei colspan und <hr>.
4. Man kann jetzt auch Tabellen in Tabellen definieren, die werden in der Definition m it <table> und </table> eingefügt.
5. Bei dem mapping von Attributen kann man statt der readings nun auch reguläre Ausdrücke verwenden, z.B.

attr Szene_rg valueFormat {'/Decken.*/' => '...

Der reguläre Ausdruck für die readings steht in '/regex/'.
6. Zur Orientierung und leichteren Pflegbartkeit habe ich auch mal einige Kommentare eingefügt.

Alle Ergänzungen sind mit # Elektrolurch gekennzeichnet.



Elektrolurch
configDB und Windows befreite Zone!

justme1968

wenn dein fix hilft (und keine nebeneffekte hat) baue ich das gerne ein. es wäre schön wenn das noch in anderen installationen mit größeren readingsGroups getestet werden kann.

ps: laut html standard ist das schließende </tr> in den meisten fällen nicht mandatory: wenn direkt danach wieder ein <tr> kommt oder am ende der tabele zum beispiel.

irgendwo gibt es sogar einen thread dazu. da hatte ein unnötiges </tr> irgend ein problem gemacht. das ist aber schon eine weile her.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968