Select Widget mit eigener Funktion

Begonnen von Det20, 25 Dezember 2017, 11:53:08

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

ich möchte gerne ein Select-Widget verwenden und bei der Auswahl eine FHEM Funktion (aus 99_MyUtils) aufrufen. Geht das? Kann  mir da jemand einen Tipp geben?

Ellert

Nimm ein DOIF als Backend und setze in TabletUI das select-Widget drauf.
Erstelle für jeden Eintrag der Auswahlliste einen leeren Bedingungszweig, dessen Befehlsteil die entsprechende Funktion in der 99_myUtils aufruft.

(#1) {funktion1}
DOELSEIF (#2) {funktion2}
...


und das Attribut

do always

Dann kannst Du mit set <doifname> cmd_1 die  Funktion 1 aufrufen, mit  set <doifname> cmd_2 die 2. Funktion usw.

data-items wäre dann ["cmd_1","cmd_2",...]

Ungetestet


Det20

Hmmm ... Klappt, aber irgendwie unschön

Ellert

Zitat von: Det20 am 28 Dezember 2017, 11:41:10
Hmmm ... Klappt, aber irgendwie unschön
Denk Dir doch selbst was schöneres aus ;)

Det20

Die Buttons haben ne Möglichkeit "onclick="ftui.setFhemStatus('{IrgendeineFunktion()}')", sowas wäre cool.
Gut, wenn's nicht geht, geht's halt nicht. trotzdem danke für die Idee.

sinus61

Schreib doch einfach die Funktion rein:


<div data-type="select"
   data-items='["{Testfunktion(1)}","{Testfunktion(2)}"]'
   data-alias='["Wert1","Wert2"]'
   data-cmd=""
   data-quote=""
</div>

Det20

#6
Wow, das geht? Sehr sehr geil. Aber wie übergebe ich Parameter als String?


<div data-type="select"
   data-items='["{MyFunction(\"Test1\")}","{MyFunction(\"Test2\")}"]'
   data-alias='["Test1","Test2"]'
   data-hide="GoogleHome:presence" data-hide-on="offline"
   data-set=""
   data-cmd=""
   data-quote=""
   class="cell w3x">
</div>
[\Code]

sinus61

Strings scheinen in diesem Fall etwas schwierig zu sein, mir fällt dazu nur ein mit Zahlen zu arbeiten und das in der Funktion zu übersetzen.

setstate

die Quotes für die Parameter müssen so aussehen.

&quot;

Det20


sinus61

Also quot geht bei mir nicht, aber so geht es jetzt:


<div data-type="select"
   data-items='["{Testfunktion('Hallo Welt')}","{Testfunktion('Hallo Mars')}"]'
   data-alias='["Wert1","Wert2"]'
   data-cmd=""
   data-quote=""
</div>