Hauptmenü

FTUI version 3

Begonnen von Bunnu, 25 Oktober 2020, 09:25:41

Vorheriges Thema - Nächstes Thema

mr_petz

#3030
tofixed(3) passt! ;D
Hast du eine andere Lösung um auf hinten 5 zu runden?
Meine pipe rundet nun mal nur auf .0 oder .5.
wenn kleiner x.25 und größer x.75 wird auf 0 und alles was dazwischen ist auf x.5 und die 0 hinten dran gehangen.
Also wenn du mit 1.255970 testest, wirst du sehen das x.50 da steht... (mit der ersten pipe!)

LG

Edit:
Zitat von: mr_petz am 02 Januar 2023, 17:22:30
Ich nutze noch meine eigene Pipe für das Runden auf .5 oder .0 mit extra 0. Der optik halber ;D:

Nochmal zum Verständnis. um so weiter du hinten eine gerundete 5 haben möchtest, umso mehr Nullen müssen an die beiden 2 der Berechnung...
Sieht man an deinem letzten Test/Bsp.: Ergebnis ist 1.195 weil da die letzten 5970 sind und da wird auf 5 abgerundet durch die pipe.

OdfFhem

Zitat von: mr_petz am 02 Januar 2023, 19:24:56
Hast du eine andere Lösung um auf hinten 5 zu runden?
Nicht wirklich ... mir fehlt aber auch bis jetzt noch ein Anwendungsfall  :-\

mr_petz

Zum Beispiel meine Aussentemperatur.
Diese zählt auf 3 Kommastellen. Bsp. gerade : 9.125
Das sieht in meinen Augen nicht gut aus. Des Wegen hier am Bsp. x.0 oder x.5

LG mr_petz

OdfFhem

Langsam wird's hell ... schön bei diesem Beispiel: FTUI3 liefert die Standardwerkzeuge, verhindert aber auch keine "Hausmittel" :)

mr_petz

Zitat von: OdfFhem am 02 Januar 2023, 20:02:07
Langsam wird's hell ...

Ist doch gerade erst dunkel geworden... ;D

jual

Zitat von: mr_petz am 02 Januar 2023, 15:21:59
Wenn es im <ftui-label> sein soll dann so über Umweg als Sonderlösung Bsp.:

<ftui-label [text]="Device1 | t1=>this.t1=t1; Device2 | t2=>this.t2=t2" [hidden]="Device1 | t1=>this.t2===t1?this.t=true:'' | map('this.t:true'); Device2 | t2=>this.t1===t2?this.t=true:'' | map('this.t:true')"></ftui-label>

Hier wird hidden=true wenn beide device exakt den gleichen Inhalt haben.

Edit:
Für ein [text] device im label:

<ftui-label [text]="Device1" [hidden]="Device1 | t1=>this.t1=t1 | ()=>this.t2===this.t1?this.t=true:'' | map('this.t:true'); Device2 | t2=>this.t2=t2 | ()=>this.t1===this.t2?this.t=true:'' | map('this.t:true')"></ftui-label>


LG

Vielen Dank nochmals für den tollen Support. Funktioniert bei mir leider noch nicht ganz richtig und liefert auch seltsame Ergebnisse, die ich noch nicht nachvollziehen konnte. Ich versuche erstmal das Konstrukt noch ein wenig besser zu verstehen und schau dann mal, ob ich auf der Basis eine Lösung finde.

mr_petz

Du müsstest mir schon paar mehr Infos geben und deine genaue Vorstellung und Definitionen...
Mit Device1 und 2 die eine Uhrzeit haben kann ich nicht viel anfangen...
Da kann ich nur raten... Sorry

LG

jual

Zitat von: mr_petz am 02 Januar 2023, 21:32:33
Du müsstest mir schon paar mehr Infos geben und deine genaue Vorstellung und Definitionen...
Mit Device1 und 2 die eine Uhrzeit haben kann ich nicht viel anfangen...
Da kann ich nur raten... Sorry

LG

Ok, dann versuche ich es nochmal etwas genauer. Es geht um den Vergleich von zwei Datumsinfos im Format mm.dd.yyyy. Wenn die beiden Datumsinfos identisch sind, würde ich ein "ftui-row" mittels "hidden" verstecken. Also etwa wie folgt:

<ftui-row hidden = "Device1.datum == Devic2.datum ? true : false"></ftui>

mr_petz

#3038
Ok, so wie im gif habe ich es verstanden...
Funktioniert...
Wenn Datum1===Datum2 ist, wird die row ausgeblendet.
Damit die Höhe dabei nicht verloren geht, ist eine unabhängige row darum.
Hier mein Democode:

<ftui-button (value)="Device1" states="01.01.2023,02.01.2023,03.01.2023">Device1</ftui-button>
<ftui-button (value)="Device2" states="01.01.2023,02.01.2023,03.01.2023">Device2</ftui-button>
<ftui-row height="50px">
  <ftui-row [hidden]="
      Device1 | t1=>this.t1=t1 | ()=>this.t2===this.t1;
      Device2 | t2=>this.t2=t2 | ()=>this.t1===this.t2
  ">
    <ftui-label size="5" color="primary" [text]="Device1" class="thin"></ftui-label>
    <ftui-label size="5" color="primary" [text]="Device2" class="thin"></ftui-label>
</ftui-row>
</ftui-row>


Edit: Code gekürzt...

OdfFhem

Und wieder ein interessantes Feature, das ich gerne für z.B. die Anzeige einer Multiplikation nutzen würde ...


  <ftui-row  height="50px">
    <ftui-button [value]="ftuitest:integer1" (value)="setreading ftuitest:integer1" states="1,2,3,4,5">integer1 ... 1..5</ftui-button>
    <ftui-button [value]="ftuitest:integer2" (value)="setreading ftuitest:integer2" states="1,2,3,4,5">integer2 ... 1..5</ftui-button>
  </ftui-row>
  <ftui-row height="50px">
    <ftui-row>
      <ftui-label size="5" color="red" [text]="ftuitest:integer1" class="thin"></ftui-label>
      <ftui-label size="5" color="red" [text]="ftuitest:integer2" class="thin"></ftui-label>
      <ftui-label size="5" color="yellow" [text]="ftuitest:integer1 | t1=>this.t1=t1 | ()=>this.t=this.t2===this.t1 ; ftuitest:integer2 | t2=>this.t2=t2 | ()=>this.t=this.t1===this.t2 | ()=>this.t"></ftui-label>
      <ftui-label size="5" color="green" [text]="ftuitest:integer1 | t1=>this.t1=t1 ; ftuitest:integer2 | t2=>this.t2=t2 | ()=>this.t1*this.t2"></ftui-label>
    </ftui-row>
  </ftui-row>


* 1.Spalte (rot)    = Wert von integer1
* 2.Spalte (rot)    = Wert von integer2
* 3.Spalte (gelb) = sind integer1 und integer2 gleich ?
* 4.Spalte (grün) = Ergebnis der Multiplikation von integer1 und integer2


**** Startwerte **** ... 2 2 true  4
links drücken        ... 3 2 false 3
      drücken rechts ... 3 3 true  9
      drücken rechts ... 3 4 false 12
links drücken        ... 4 4 true  4
      drücken rechts ... 4 5 false 20
links drücken        ... 5 5 true  5


... klappt aber gemäß der obigen Ergebnisübersicht noch nicht wirklich


- den yellow-Teil eingekürzt ... Ergebnis bleibt gleich "falsch" ... 3.Spalte zeigt immer das Ergebnis der letzten Teilaktion

      <ftui-label size="5" color="yellow" [text]="ftuitest:integer1 | t1=>this.t1=t1 | ()=>this.t=this.t2===this.t1 ; ftuitest:integer2 | t2=>this.t2=t2 | ()=>this.t=this.t1===this.t2></ftui-label>


- den green-Teil erweitert ... Ergebnis entspricht den Erwartungen ... beide Teilaktionen führen die Multiplikation durch

      <ftui-label size="5" color="green" [text]="ftuitest:integer1 | t1=>this.t1=t1 | ()=>this.t1*this.t2 ; ftuitest:integer2 | t2=>this.t2=t2 | ()=>this.t1*this.t2"></ftui-label>


mr_petz

#3040
Schön dich wieder zu erfreuen  :D
Wie bist du darauf gekommen?:

()=>this.t=this.t2===this.t1

this.t wird true wenn beide gleich.?
5 und 5 ist true? usw...
LG

Edit: jetzt hats klick gemacht...
@jual
Du kannst es noch abändern/kürzen in:

[hidden]="Device1 | t1=>this.t1=t1 | ()=>this.t2===this.t1 ; Device2 | t2=>this.t2=t2 | ()=>this.t1===this.t2"

jual

Zitat von: mr_petz am 02 Januar 2023, 22:47:35
Ok, so wie im gif habe ich es verstanden...
Funktioniert...
Wenn Datum1===Datum2 ist, wird die row ausgeblendet.
Damit die Höhe dabei nicht verloren geht, ist eine unabhängige row darum.
Hier mein Democode:

Perfek! Herzlichen Dank für die Mühe. Da habe ich wieder ein weiteres Beispiel, um diese ganze Coderei ein wenig besser zu verstehen ;-).

mr_petz

@OdfFhem

Ich hatte hier schonmal eine Addition zweier Readings erstellt. :
https://forum.fhem.de/index.php/topic,115259.msg1243306.html#msg1243306

LG

OdfFhem


Zitat von: mr_petz am 03 Januar 2023, 08:11:39
Schön dich wieder zu erfreuen  :D
Gerne doch  :)

Zitat von: mr_petz am 03 Januar 2023, 08:11:39
Du kannst es noch abändern/kürzen
Ungetestete Anmerkungen ...
- map-Pipe könnte man vermutlich auch weglassen; wird sowieso nur bei Änderung von Device2 angewendet
- this.t könnte man vermutlich auch weglassen; der Vergleich alleine ergibt ja schon true oder false

Zitat von: mr_petz am 03 Januar 2023, 10:45:33
Ich hatte hier schonmal eine Addition zweier Readings erstellt.
Schaue ich mir heute Abend an ...

mr_petz

Super, funktioniert...
Klar, wenn beide gleich -> wird true im hidden gesetzt...
Habe es oben geändert...

LG