FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: ToM_ToM am 31 Juli 2017, 10:13:01

Titel: [gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 31 Juli 2017, 10:13:01
Hallo Zusammen,

ich lasse mir derzeit den aktuellen DAX Index anzeigen und würde dahinter gerne anzeigen lassen ob er gestiegen oder gefallen ist.
Also so:

DAX: 12.178,32 (+0,28)

oder

DAX: 12.178,32 (-0,28)

Gibt's da im Label-Widget eine Möglichkeit, das mit dem Vorzeichen anhand des Wertes hinzubekommen?

VG, Thomas
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 31 Juli 2017, 11:03:22
Ja, mit data-limits und data-colors.

data-limits='[-9999,0]'
data-colors'["red","green"]'

Ich glaube, im FHEM Wiki ist für das Label Widget dazu auch ein Beispiel dabei.

https://wiki.fhem.de/wiki/FTUI_Widget_Label
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 31 Juli 2017, 11:04:55
Hallo setstate,

vielen Dank für die schnelle Antwort.

Aber das mit den Farben ist kein Thema. Das läuft.

Mir geht es um die Vorzeichen vor dem Wert.

VG, Thomas
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 31 Juli 2017, 11:11:37
Verstehe ich nicht ganz ...
Wenn du eine Differenz berechnest, hat die doch schon ein Vorzeichen.
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 31 Juli 2017, 11:18:30
ZitatWenn du eine Differenz berechnest, hat die doch schon ein Vorzeichen.

Ich verwende das Modul um Börseninfos anzuzeigen (bin gerade auf Arbeit und mir fällt der Name des Moduls nicht ein).
Diese Modul liefert verschiedene Readings. Unter anderem den aktuellen Wert und das Delta, welches die Differenz zum Vortag enthält.
Dieses Delta hat zwar ein negatives Vorzeichen sofern der Wert negativ ist, aber wenn der Wert positiv ist, hätte ich gerne auch ein positives Vorzeichen in der Anzeige.
Sorry, wenn meine Frage etwas verwirrend war. :)
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 31 Juli 2017, 11:30:17
Ich würde das mit einer RegEx Substitution lösen.


data-substitution="s/^([0-9,]+)$/+$1/g"
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 31 Juli 2017, 11:37:44
ZitatIch würde das mit einer RegEx Substitution lösen.

Ach super. Muss ich heute Abend gleich mal ausprobieren.
Mit data-substitution und nem RegEx hatte ich gestern Abend auch ewig rumprobiert, aber irgendwie raffe ich das Zusammenspiel noch nicht so ganz.

VG, Thomas
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 31 Juli 2017, 21:32:37
Hallo setstate,

ich habe das jetzt mal probiert. Es wurde mir jedoch kein positives Vorzeichen angezeigt. Daraufhin habe ich mal das Attribut data-fix="3" gelöscht und siehe da, Vorzeichen war da. Sogar 2.   ;D
Habe mir dann nochmal das Reading angesehen und gesehen dass dieses sogar schon mit positiven Vorzeichen existiert. Da ich aber das Attribut data-fix="3" verwendet hatte, wurde dann in der Anzeige automatisch das positive Vorzeichen vorne dran entfernt.
Daher wollte ich das jetzt komplett über data-substitution lösen. Aber das Ergebnis ist anders als erwartet.

data-substitution="s/(\+[0-9]+)\.([0-9]{2})/$1,$2/g"

Hier nochmal komplette Daten:




Reading   Value
DAX_net   +0.187352

<div data-type="label"
data-device="Boerse"
data-get="DAX_net"
data-pre-text="("
data-post-text=")"
data-limits='[0.000000001,0,0.000000001]'
data-colors='["red","white","green"]'
data-substitution="s/(\+[0-9]+)\.([0-9]{2})/$1,$2/g"
class="normal inline">
</div>


Ergebnis: (+0,187352)

Eigentlich erwartetes Ergebnis: (+0,18)

Noch cooler wäre natürlich wenn ich nicht nur die hinteren Zahlen abschneide sondern tatsächlich gerundet wird.
Aber weiß nicht ob man das per REGEX hinbekommt. Da wäre data-fix dann wieder ziemlich cool gewesen.

Hoffe, du hast noch eine Idee für mich. :)

VG, Thomas
Titel: Antw:Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 31 Juli 2017, 22:05:00
Im Code wird erst die Substitution gemacht und dann gerundet.

Dann kann man wirklich nur mit RegEx nach 2 Nachkommastellen abschneiden

data-substitution="s/(\+[0-9]+)\.([0-9]{2}).*/$1,$2/g"
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 05 April 2018, 17:17:41
Hi setsate, ich hatte jetzt aktuell wieder den Fall wo ich die Punkte durch Komma ersetzen wollte.
Habe das folgendermaßen gelöst.
data-substitution="s/([\d]+)[\.]?([\d]{0,2})(\d*)/$1,$2/g"

Nun habe ich aber noch das Problem dass Werte nicht immer Nachkommastellen haben, sondern auch als Ganzzahlen im Reading auftauchen.
Ist der Wert nun nicht 20,5 sondern 20 dann würde mein data-subsitution ja den Wert als 20, darstellen.
Gibt es mittlerweile evtl. schon eine elegantere Lösung oder hast du noch eine Idee?

VG, Thomas
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 06 April 2018, 06:18:08
data-round="2 ist schnell eingebaut, für exaktes Runden.
Aber dann fällt das + bei positiven Zahlen wieder weg. Da habe ich noch keine elegante Idee, wie man das wieder hinzaubert. Rein technisch ist das zwar auch ganz einfach, aber ich will nicht, dass dann alle Labels nach >0 und <0 abfragen müssen.
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 06 April 2018, 08:56:26
In meinem aktuellen Fall wo ich das bräuchte, wäre das mit dem positiven Vorzeichen erst mal irrelevant.
Ich möchte aktuell nur dass allgemein alle Werte schicker aussehen und das deutsche Dezimalzeichen verwenden.
Wenn ich mit data-substitution nur Punkte durch Komma ersetze, greift data-fix ja leider nicht mehr.
Und mit meinem Regex würde bei einer Ganzzahl auch immer ein Komma hinter der Zahl stehen.

Ziel ist:
20 soll auch 20 ausgeben
20.5 soll 20,5 ausgeben
20.5318732 soll 20,53 ausgeben.

VG, Thomas
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: setstate am 06 April 2018, 09:09:58
Wenn da ein Komma drin ist, erkennt JavaScript das nicht mehr als Zahl. Die Substitution Funktion kommt aber vor den Zahlen-Funktionen. Es fehlt also noch eine Format Funktion vor der Ausgabe.
Da bin ich mir noch nicht sicher, was ich da baue. Ich habe verschiedene Ansätze im Kopf:
- data-substitution erweitern (ist aber jetzt schon zu vielschichtig und verwirrend)
- data-filter (neu) mit Möglichkeit zur Angabe von verschiedenen Funktionen ( am besten per Pipe wie bei Angular)
- data-format (neu) mit Funktionsaufrufen wie bei data-substitution ( bin aber kein Fan der eval() Funktion und würde das am liebsten nicht mehr unterstützen.)
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 06 April 2018, 09:33:40
Hm... wäre es sinnvoll ein zweites data-substitution einzubauen welches grundsätzlich immer erst am Ende greift wenn alle anderen Parameter verarbeitet wurden?
also quasi ein data-final-substitution?

VG, Thomas
Titel: Antw:[gelöst] Vorzeichen wenn Wert positiv/negativ im Label Widget möglich?
Beitrag von: ToM_ToM am 21 April 2018, 13:45:06
Hi setstate, hast du hier zufällig schon eine Idee? :)