FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: zap am 02 März 2016, 19:56:40

Titel: Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 02 März 2016, 19:56:40
Hallo,
ich habe ein FHEM-Device, das in einem Reading einen fertig formatierten HTML-Code enthält (Tabelle mit div Tags und FTUI Klassen col und row).

Bisher konnte ich das in einem Label-Widget darstellen. Seit einem Update vorhin geht das nicht mehr. Es wird nur die erste Zeile der Tabelle (enthält die Überschrift) ausgegeben.

Von der 2. Zeile wird nur "02" angezeigt. Möglicherweise liegt es am Inhalt (Datum). Hier mal der Inhalt des Readings (die Klasse col-12 ist selbst definiert, entspricht col-1-2 minus 1%):

<div class="cell">
  <div class="row">
    <div class="red">
      <div class="col-12">Uhrzeit</div><div class="col-12">Nummer</div>
    </div>
  </div>
  <div class="row">
    <div class="black">
      <div class="col-12">02.03 18:48</div><div class="col-12">01714234217</div>
    </div>
  </div>
</div>
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: roman1528 am 02 März 2016, 20:31:51
Moin.

Ja es liegt leider am Datum/Uhrzeit... Da gab es schon einige Diskussionen dies bzgl.

Habe leider das gleiche Problem: Bei wird Datum/Uhrzeit aus SYSMON starttime_text nicht mehr korrekt angezeigt. Witzigerweise ist hier ein Punkt der auslöser. Nicht wie in den anderen Diskussionen der Doppelpunkt aus der Uhrzeit.

Beispiel-Reading SYSMON: 24.02.2016 12:02
Beispiel-Anzeige-FTUI: 24.02

Grüße^^

P.S. Hatte vorhin auch mal versucht HTML in ein Dummy zu verpacken. Leider ist es am Semikolon ; gescheitert. War Java-Code mit drin  :'(
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 02 März 2016, 21:07:00
Könnte mit der neu eingeführten Formatierung der Nachkommastellen zusammenhängen. Ich hoffe, setstate behebt das. Vor der aktuellen Version hat das zumindest mit native html funktioniert. Durfte nur kein Newline drin sein.

Ich könnte mir auch eine Klasse oder ein Attribut vorstellen, das dem Widget signalisiert, dass das Reading HTML enthält, das nicht angefasst werden soll.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 02 März 2016, 22:27:08
ich glaube, ich habe die fragliche Stelle im Label Widget gefunden:


if (val.indexOf('.')>-1){
                    var vals = val.split('.');
                    val = "<span class='label-precomma'>"+vals[0]+"</span>" +
                          "<span class='label-comma'>.</span>" +
                          "<span class='label-aftercomma'>"+vals[1]+"</span>";
                }


Sieht so aus, als würde das Widget jeden Wert, der einen Punkt enthält, wie eine Zahl behandeln. Die <spans> zerschiessen dann den HTML-Code in meinem Reading.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: setstate am 03 März 2016, 09:08:22
Das ist natürlich wahr. Danke dir für die Ursachensuche.
Schaue ich mir an, das ist noch nicht so gut gelöst.

mgl. Lösung?

                if (!isNaN(parseFloat(val)) && isFinite(val) && val.indexOf('.')>-1){
                    var vals = val.split('.');
                    val = "<span class='label-precomma'>"+vals[0]+"</span>" +
                          "<span class='label-comma'>.</span>" +
                          "<span class='label-aftercomma'>"+vals[1]+"</span>";
                }

Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 03 März 2016, 10:05:29
Ja, ich denke das würde gehen. Würde nur schief gehen, wenn im Value ein Datum der Form "01.03" steht. Aber mit einer Änderung auf "01.03." sollte das dann auch keine Probleme mehr machen.

Was hältst Du davon, alternativ ein Element "data-content" einzuführen? Das könnte das Format von Value explizit festlegen. Mögliche Werte könnten sein: "number", "text", "static". Der Wert "static" würde für das Widget bedeuten: fasse den Inhalt nicht an. Das wäre dann für vorformatierten Inhalt wie z.B. HTML gedacht.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: brmpfl am 07 März 2016, 20:44:58
Moin,

ich kämpfe ebenfalls mit dem . Problem.
Hat das schon irgendwer in den Griff bekommen?

Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 07 März 2016, 21:10:24
Ja, habe eine Kopie mit dem Namen widget-exlabel angelegt, im Widget alles was label war auf exlabel geändert, ein zusätzliches Element "data-content" eingebaut und in Abhängigkeit von dessen Inhalt den Code für die Punktverarbeitung ausgeschlossen.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: Mario67 am 14 März 2016, 23:39:21
Hallo zap,

kannst Du bitte Dein Widget widget-exlabel zur Verfügung stellen. Mein eigener Versuch auf Grundlage von widget_label und widget_example ein HTML-fähiges Widget zu bauen, führt leider nicht zu einem brauchbaren Ergebnis. Wenn das darzustellende HTML eine Tablelle enthält, blitzt diese nach Browseraktualisierung kurz auf. Danach ist das Widget leer. Einfache HTML-Konstrukte werden richtig dargestellt.

Gruß,
Mario
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 15 März 2016, 08:31:16
Bei mir funktioniert das normale Label Widget seit dem letzten Update wieder. Ich verwende auch Tabellen, sowohl mit div als auch normalen table Tags. Ich poste später mal ein Beispiel.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: Mario67 am 15 März 2016, 09:32:23
Danke für die Rückmeldung. Verwendest Du die 2.0 Beta?

Gruß,
Mario
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 15 März 2016, 17:23:46
Ja. Hier der Inhalt eines Readings. Vielleicht gut zu wissen: in dem Code kommt kein newline vor!


<table width="100%"><tr><th>Zeitraum</th><th>Warnung</th></tr><tr style="color: #ffff00;"><td width="20%" valign="middle" class="border-t">16.03.2016 00:00:00<br>16.03.2016 10:00:00</td><td width="80%" align="left" valign="middle" class="border-t">Vor allem bei Aufklaren tritt leichter Frost um -1 °C auf.</td></tr><tr style="color: #ffff00;"><td width="20%" valign="middle" class="border-t">15.03.2016 20:00:00<br>16.03.2016 10:00:00</td><td width="80%" align="left" valign="middle" class="border-t">Es tritt oberhalb 400 m leichter Frost zwischen -1 °C und -4 °C auf.</td></tr></table>

Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: Mario67 am 16 März 2016, 00:55:35
Danke für den Hinweis auf das Newline. Ein $messageTable =~ s/[\x0A\x0D]//g; hat (fast) alle Probleme gelöst.
Ist bekannt warum die Mechanik so empfindlich gegenüber Zeilenschaltungen ist?

Danke & Gruß,
Mario
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: zap am 16 März 2016, 09:02:53
Ich nehme an, das hängt mit der Art und Weise zusammen, wie Tablet-UI die Readings abfragt. Möglicherweise hat sich das durch die Verwendung von JSON in der 2.0 Beta verbessert. Ich würde mir wünschen, dass setstate ein Attribut data-content einbaut, mit dem man steuern kann, ob der Content 1:1 aus dem Reading übernommen wird.

BTW: Falls Du newlines unbedingt brauchst, kannst Du <br/> verwenden. Das funktioniert.
Titel: Antw:Seit letztem Update kein HTML-Code in Label Widget
Beitrag von: Mario67 am 16 März 2016, 09:09:55
Nein die Newlines brauche ich an sich nicht. Die Inhalte der Zellen in der Tabelle sind jeweils relativ kurz.
Das sind Verkehrsmeldungen (inkl. Blitzer  ;), welche ich mit einem eigenen von HTTPMOD abgekupferten Modul aus einer Website extrahiere und beliebig (z.B. gefiltert) wieder zusammenbauen kann.
Das generierte HTML ist dann nur schlecht lesbar. Das ist aber nicht weiter tragisch.