Hauptmenü

FTUI version 3

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

Vorheriges Thema - Nächstes Thema

SirMarco

Ja genau so war das gemeint!
Danke dir!

Det20

Zitat von: setstate am 06 März 2022, 16:27:30
ich habe es doch nicht im ftui-content eingebaut. Das passte alles nicht ins allgemeine Konzept. Es gibt jetzt im Binding eine neue Pipe-Function:
sendCommand()

Damit kann man durch eine Readingupdate ein Command an FHEM schicken und das Ergebnis in das Attribute schieben.


  <ftui-label [text]="BadFenster | sendCommand('{countOpenWindows()}')"></ftui-label>


Irgendwie klappt das alles bei mir nicht. "Statistik" ist eine ReadingsGroup, trotzdem kommt hier nix:


<ftui-content [content]="get Statistik html"></ftui-content>
<ftui-content [content]="Statistik html"></ftui-content>


Und auch über die Funktion (sub countOpenWindows() return "test";) kommt nix:


<ftui-label [text]="sendCommand('{countOpenWindows()}')">11</ftui-label>


Oder habe ich da was falsch verstanden?

setstate

ja, das passt noch nicht. Eine Erklärung dazu:


<ftui-label text="25"></ftui-label>


Ist ein statisches Label mit dem Wert 25


<ftui-label [text]="mySensor:temperature"></ftui-label>


Ist eine Art Subscription (Abonnement) auf Änderungen des FHEM Reading temperature des Devices mySensor. Wenn es ein Event auf diesem Reading gibt, wird der Wert in das text-attribut geschrieben. Als ob man die ganze Zeit im Event-Viewer auf diesen einen String "mySensor temperature" warten würde.

Man kann nicht einfach eine FHEM Function oder nur eine FTUI Funktion angeben, ohne den Event-Listener.

Es muss also anstatt


<ftui-label [text]="sendCommand('{countOpenWindows()}')"></ftui-label>


das so mit dem Reading als Trigger angeben


<ftui-label [text]="BadFenster | sendCommand('{countOpenWindows()}')"></ftui-label>



Immer wenn es ein BadFenster-Event gibt, wird der Wert "open" oder "closed" nicht in das text-attribute geschrieben, sondern vorher damit die Funktion sendCommand() aufgerufen und dessen Result nach text-attribut geschrieben.

Det20

Event-getriggert, da war mein Fehler. Danke, kapiert. Ist alles noch recht neu und ich bin wirklich geflasht von dem Möglichkeiten.
Danke dir!

SirMarco

Hallo zusammen

Besteht die Möglichkeit vom einem reading etwas "abzuschneiden" oder nur die ersten "X" Positionen vom reading anzeigen?
Mein reading hat eine Uhrzeit 07:30:00, möchte gerne die "sekunden" weghaben.

Aktuell nutze ich replace:
<ftui-label [text]="{{device}}:{{reading}}| replace(':00',' ')">

Das muss doch auch einfache gehen, oder?

Grüsse

stefan-dd

#2300
Vielleicht hilft das weiter:

         <ftui-clock format="hh:mm:ss" slot="end" color="medium" size="0"></ftui-clock>
         <ftui-clock format="DD.MM.YYYY" slot="start" color="medium" size="0"></ftui-clock>


Oder du passt dein Reading über Userreadings an.

time {ReadingsTimestamp("Sabrina_Handy", "cmd","")},
time2 {POSIX::strftime("%H:%M",localtime(time_str2num(ReadingsTimestamp("Sabrina_Handy","cmd",""))-localtime))},

time ist die komplette Zeit | time2 ist Stunden:Minuten

SirMarco

Ich danke dir.
Möchte nicht den Timestamp ändern, sondern den Inhalt vom reading.

Ich lasse es bei dem replace  :)

mr_petz

#2302
Zitat von: SirMarco am 15 März 2022, 12:23:22
Hallo zusammen

Besteht die Möglichkeit vom einem reading etwas "abzuschneiden" oder nur die ersten "X" Positionen vom reading anzeigen?
Mein reading hat eine Uhrzeit 07:30:00, möchte gerne die "sekunden" weghaben.

Aktuell nutze ich replace:
<ftui-label [text]="{{device}}:{{reading}}| replace(':00',' ')">

Das muss doch auch einfache gehen, oder?

Grüsse

Ja es geht auch anders bzw. alternativ..., aber auch nicht schöner/besser:

<ftui-label [text]="{{device}}:{{reading}} | part('(.*:.*):.*')"></ftui-label>

so geht es mit hh:mm:ss vom Reading und wird in hh:mm umgemünzt...
part() kann RegExp...

LG mr_petz

OdfFhem

Zitat von: mr_petz am 15 März 2022, 14:42:08
part() kann RegExp...

Aussage stimmt ... wichtig dabei ist jedoch, dass der reguläre Ausdruck immer auf das komplette Reading passen muss.

Stonemuc

Zitat von: setstate am 06 März 2022, 16:27:30
ich habe es doch nicht im ftui-content eingebaut. Das passte alles nicht ins allgemeine Konzept. Es gibt jetzt im Binding eine neue Pipe-Function:
sendCommand()

Damit kann man durch eine Readingupdate ein Command an FHEM schicken und das Ergebnis in das Attribute schieben.


  <ftui-label [text]="BadFenster | sendCommand('{countOpenWindows()}')"></ftui-label>


Damit kann man auch ein readingGroup HTML holen.

   <ftui-content [content]="Sonos_Play5 | sendCommand('get Sonos_Play5RG_Favourites html')"></ftui-content>


Oder in Kurzform:

   <ftui-content [content]="Sonos_Play5 | getHTML('Sonos_Play5RG_Favourites')"></ftui-content>



Nochmal eine Frage dazu - kann ich irgendwie die Größe anpassen? Die Anzeige der ReadingsGroup ist so riesig dargestellt, dass ich nur 2 halbe Symbole, sonst nix sehen kann....
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

mr_petz

@Stonemuc

Zitat von: Stonemuc am 16 März 2022, 02:03:01

Nochmal eine Frage dazu - kann ich irgendwie die Größe anpassen? Die Anzeige der ReadingsGroup ist so riesig dargestellt, dass ich nur 2 halbe Symbole, sonst nix sehen kann....

Da hatte ich schon was dazu geschrieben:
Zitat von: mr_petz am 04 März 2022, 19:57:32
....

Edit: Wenn man die fhemSVG´s in der RG verwendet und kein width/height angegeben hat, dann wird die Tabelle in FTUI übergroß.
Hat den Grund, weil sie ansich mit großer width und height angegeben sind.
Da sollte man aufpassen... denke ich.

Das kannst du zur Zeit nur auf der fhem-seite anpassen.
setstate müsste da auf die gelesene RG gehen und dann das width/height bei den svg´s/icons/img mitgeben. so wie ich es für die RG von Sonos gemacht habe...

LG

grossmaggul

Mal eine kurze Frage, ich finde da gerade nix zu.
Kann man bei einem Label, die Anzahl der auszugebenden Buchstaben begrenzen?
FHEM auf Debian Buster Server, 2 x nanoCUL868, 1xnanoCUL465; Homematic, MAX, MiLight, HUE,  2 x Gosund SP1

mr_petz

#2307
@grossmaggul

Das ist zur Zeit eine Möglichkeit:

<ftui-label [text]="Device | replace(/(.*)/,text.substring(0,4))"></ftui-label>

Das ist aber nicht so schön, da das text (kommt intern vom label) im replace() sich ändern könnte.

Für eine Pipefunktion müsste setstate eine Zeile in die ftui.binding.js einfügen. Bsp:

const subString = (front, rear) => input => String(input).substring(front, rear);

Dann wäre es normal über die pipes lösbar:

<ftui-label [text]="Device | subString(0,4)"></ftui-label>


Die 0 wäre stringstart und die 4 die stringlänge ab stringstart die dann ausgegeben wird...

LG mr_petz

Edit: trimString in subString geändert.

grossmaggul

O.K., danke, mal sehen ob ich mir da was basteln kann.
FHEM auf Debian Buster Server, 2 x nanoCUL868, 1xnanoCUL465; Homematic, MAX, MiLight, HUE,  2 x Gosund SP1

stefan-dd

Ich möchte Änderungen in der "menu.component.css" vornehmen. Durch ein Update wird das original immer wieder hergestellt. Die Änderungen müssen sicher in eine "user.css" .
Wie muss dies aussehen, damit die Änderung Wirkung zeigt.

.box-menu {
  height: 100%;
  width: 0;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: #111;
  overflow-x: hidden;
  transition: 0.5s;
  padding-top: 40px;