readingsHistory mit HTML-Tabellenzeilen und rechtsbündiger Ausrichtung der Werte

Begonnen von breaker27, 15 August 2022, 22:00:44

Vorheriges Thema - Nächstes Thema

breaker27

Hallo,
ich habe bei mir readingsHistory im Einsatz, um verschiedene Werte pro Tag anzuzeigen.
Ich war verwundert, dass die History einfach nur Text ist, und es keine HTML-Tabellenzeilen ("<tr><td>...</td>...</tr>") sind.
Verzweifelt hatte ich versucht, meine Werte rechts ausgerichtet anzuzeigen, weil sie unterschiedlicher Größe sind und somit unterschiedlich lange Strings bilden. Auch ein Format wie "%5.1f" für die Werte und ein monospaced-Font half nicht, denn es wurden keine führenden Leerzeichen eingefügt.

Nun habe ich readingsHistory umgebaut, so dass ein Attribut "valueAlignRight" unterstützt wird und die Anzeige eine HTML-Tabelle mit Zeilen ist. So funktioniert dann die Darstellung wie ich es mir vorstelle.

Es wäre toll, wenn dieser Ansatz in den Code übernommen wird. Sicherlich habe ich an der ein oder anderen Stelle noch einen Fehler drin, aber ich hoffe dies liest einer der Autoren und kann es übernehmen. Natürlich könnte man das Alignment auch generischer einstellbar machen (für die andreen Spalten).

Diff:
54c54
<   $hash->{AttrList} = "disable:1,2,3 mapping style timestampFormat valueFormat noheading:1 nohtml:1 nolinks:1 notime:1 nostate:1 alwaysTrigger:1 rows";
---
>   $hash->{AttrList} = "disable:1,2,3 mapping style timestampFormat valueFormat valueAlignRight noheading:1 nohtml:1 nolinks:1 notime:1 nostate:1 alwaysTrigger:1 rows";
333c333
<     $lines .= "<br>";
---
> #    $lines .= "<br>";
338c338
<   $ret .= "<td><div id=\"$d-history\" rows=\"$rows\">$lines</div></td>";
---
>   $ret .= "<td><div id=\"$d-history\" rows=\"$rows\"><table>$lines</table></div></td>";
476a477
>       my $valueAlignRight = AttrVal( $name, "valueAlignRight", "0") ? " align=\"right\"" : "";
526c527
<             $msg = "$tm$spacing<a href=\"$FW_ME$FW_subdir?detail=$n\">$m</a> $msg";
---
>             $msg = "<tr><td>$tm</td><td><a href=\"$FW_ME$FW_subdir?detail=$n\">$m</a></td><td$valueAlignRight>$msg</td></tr>";
528c529
<             $msg = "$tm$spacing$m $msg";
---
>             $msg = "<tr><td>$tm</td><td>$m</td><td$valueAlignRight>$msg</td></tr>";
638a640
>   my $valueAlignRight = AttrVal( $name, "valueAlignRight", "0") ? " align=\"right\"" : "";
647c649
<     my $msg = "$tm$spacing--clear--";
---
>     my $msg = "<tr><td>$tm</td><td>&nbsp;</td><td$valueAlignRight>--clear--</td></tr>";
659c661
<     my $msg = "$tm$spacing$param ". join( " ", @a );
---
>     my $msg = "<tr><td>$tm</td><td>&nbsp;</td><td$valueAlignRight>$param ". join( " ", @a ) . "</td></tr>";

breaker27

Kleines Update.
- Es werden (wie im Original) die angegebene Anzahl Zeilen angezeigt, auch wenn erst weniger Zeilen gefüllt sind.
- Hilfetext erweitert

54c54
<   $hash->{AttrList} = "disable:1,2,3 mapping style timestampFormat valueFormat noheading:1 nohtml:1 nolinks:1 notime:1 nostate:1 alwaysTrigger:1 rows";
---
>   $hash->{AttrList} = "disable:1,2,3 mapping style timestampFormat valueFormat valueAlignRight noheading:1 nohtml:1 nolinks:1 notime:1 nostate:1 alwaysTrigger:1 rows";
329a330,331
>     } elsif (! $line) {
>       $lines .= "<tr><td colspan=\"3\">&nbsp;</td></tr>";
333d334
<     $lines .= "<br>";
338c339
<   $ret .= "<td><div id=\"$d-history\" rows=\"$rows\">$lines</div></td>";
---
>   $ret .= "<td><div id=\"$d-history\" rows=\"$rows\"><table>$lines</table></div></td>";
476a478
>       my $valueAlignRight = AttrVal( $name, "valueAlignRight", "0") ? " align=\"right\"" : "";
526c528
<             $msg = "$tm$spacing<a href=\"$FW_ME$FW_subdir?detail=$n\">$m</a> $msg";
---
>             $msg = "<tr><td>$tm</td><td><a href=\"$FW_ME$FW_subdir?detail=$n\">$m</a></td><td$valueAlignRight>$msg</td></tr>";
528c530
<             $msg = "$tm$spacing$m $msg";
---
>             $msg = "<tr><td>$tm</td><td>$m</td><td$valueAlignRight>$msg</td></tr>";
638a641
>   my $valueAlignRight = AttrVal( $name, "valueAlignRight", "0") ? " align=\"right\"" : "";
647c650
<     my $msg = "$tm$spacing--clear--";
---
>     my $msg = "<tr><td>$tm</td><td>&nbsp;</td><td$valueAlignRight>--clear--</td></tr>";
659c662
<     my $msg = "$tm$spacing$param ". join( " ", @a );
---
>     my $msg = "<tr><td>$tm</td><td>&nbsp;</td><td$valueAlignRight>$param ". join( " ", @a ) . "</td></tr>";
813a817,818
>       <li>valueAlignRight<br>
>         Align the values in the history table to the right side.