FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: evilknivel am 11 Januar 2017, 13:18:41

Titel: Select mit data-alias "füttern"
Beitrag von: evilknivel am 11 Januar 2017, 13:18:41
Hi zusammen ich versuche ein Select-Feld im Tablet UI mit data-alias zu füllen habt ihr da erfahrungen?

Es handelt sich um einen Enigma2 Receiver der die Sender in der Form mit Unterstrich erwartet das finde ich nur etwas unschön.
Das Reading chList ohne die Unterstriche habe ich per UserReading selber erzeugt.

Momentan habe ich es so im UI.

<div data-type="select" data-device="vuplus" data-delimiter="," data-list="channelList" data-alias="chList" data-get="channel" data-set="channel" class=""></div>

läuft aber leider nicht wie gedacht siehe Bild. Sieht aus als würde der data-delimiter da nicht fassen um die Werte zu trennen.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: sinus61 am 11 Januar 2017, 17:41:26
data-alias erwartet aber laut Beschreibung ein Array als alias für data-items, nicht eine delimeter getrennte Liste wie bei data-list
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: evilknivel am 12 Januar 2017, 13:53:39
Hi danke für die Info!

Dann weiß ich ja schonmal warum es nicht läuft, das heißt das Array fürs Alias müsste quasi wie ein Mapping aufgebaut sein, richtig? Oder wie wäre das Format?
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: setstate am 12 Januar 2017, 14:58:57
data-alias ist nur eine einfache Liste (als Array) von Ersetzungen indexbasiert. D.h. Erster Eintrag im Alias ersetzt erstes Listitem, zweites Alias ersetzt zweiten Listeintrag usw.

data-alias kann aber mit Device:Reading auf ein Reading zeigen, das solch eine Liste ( Doppelpunkt getrennt) liefert.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: sinus61 am 12 Januar 2017, 18:10:45
Dann müsste obiges Beispiel ja funktionieren wenn die alias Liste mit Doppelpunkt getrennt wird.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: setstate am 12 Januar 2017, 18:41:52
Leider ist der delimiter für die alias Liste noch fest ein :

Das muss ich noch ändern.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 05 März 2017, 10:32:42
Hallo setstate,

ich würde das Thema gerne mal hochholen.
Bist du schon dazu gekommen, den als Delimiter für die Daten eingestellten Trenner auch für die Aliase zu verwenden?

Ich würde gerne meine Sonos-Favoriten anzeigen, die aber Doppelpunkte enthalten :)

Danke schon mal...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: setstate am 06 März 2017, 18:09:05
... habe ich jetzt gemacht. Der data-delimiter gilt jetzt auch für den Alias.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 06 März 2017, 18:28:28
Hi setstate,

danke für die Anpassung... funktioniert super...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 07 März 2017, 12:00:11
Hi setstate,

eine Frage habe ich dazu noch:
mit welcher Liste wird denn der per "data-get" ermittelte Wert verglichen, um die Auswahl darzustellen?
Ich habe es ehrlich gesagt schon mit beiden Varianten versucht, und keinen Erfolg gehabt. Er zeigt immer das erste Element als Vorgabeauswahl an (was z.B. auch blöd ist, wenn man genau dieses dann auswählen will... es ist ja keine Änderung, und verursacht dementsprechend keine set-Anweisung).

Kannst du mir einen Tipp geben, was ich da falsch mache?

Hier noch kurz meine Definition:

<div data-type="select"
data-device="Device"
data-list="FavouritesList"
data-alias="FavouritesListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentFavouriteNameMasked"
data-set="StartFavourite"
class="w3x inline"></div>


Danke schon mal...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: setstate am 07 März 2017, 12:09:52
Der Wert in data-get muss einem Listenelement entsprechen. Nicht eines Aliases. 
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 07 März 2017, 13:12:50
Hi setstate,

hmm... das klappt bei mir nicht.

Folgende Werte haben die Readings meiner Definition oben:

FavouritesList
80s:.Café.80s.FM|80s:.FFH.Digital.-.Die.80er|80s:.RADIO.fresh80s|80s:.Radio.RMF.80s|Antenne.Niedersachsen|FFH.Digital.-.Eurodance|FFH.Digital.-.Lounge|Hit-Radio.Antenne.Bremen.104.8.(Pop)|KUSCHELROCK.(Rock.+..Pop.Ballads)|Kuschel.FM|Mit.Star.bewertet.Reiner|R.:.Spiel-Aktuelles|Songs.to.Sing.in.the.Car|Symphonia.(Super.Deluxe.Edition)|XMas:.Antenne.Niedersachsen.X-Mas|XMas:.Christmas.Radio.FM|XMas:.Forever.Christmas.Radio|XMas:.Radio.Santa.Claus|XMas:.Radio.Weihnacht|radio.ffn



FavouritesListAlias
80s: Café 80s FM|80s: FFH Digital - Die 80er|80s: RADIO fresh80s|80s: Radio RMF 80s|Antenne Niedersachsen|FFH Digital - Eurodance|FFH Digital - Lounge|Hit-Radio Antenne Bremen 104.8 (Pop)|KUSCHELROCK (Rock + Pop Ballads)|Kuschel FM|Mit Star bewertet Reiner|R.: Spiel-Aktuelles|Songs to Sing in the Car|Symphonia (Super Deluxe Edition)|XMas: Antenne Niedersachsen X-Mas|XMas: Christmas Radio.FM|XMas: Forever Christmas Radio|XMas: Radio Santa Claus|XMas: Radio Weihnacht|radio ffn



currentFavouriteNameMasked
Mit.Star.bewertet.Reiner


Anbei mal zwei Screenshots, wie die Initiale Anzeige aussieht, und der Inhalt der Klappbox. Bis auf die Initiale Anzeige sieht das alles super aus. Der Favorit wird auch aktiviert, wenn ich ihn auswähle (also einen anderen als den ersten :) )

Was könnte dass dann sein?

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Standarduser am 07 März 2017, 20:11:38
Bei mir funktioniert das auch nicht richtig.

Mein Select widget sieht so aus:

<div data-type="select"
data-device="DG.ku.MM.Squeezebox"
data-list="ftuiFavoritesItems"
data-alias="ftuiFavoritesAlias"
data-get="favorites"
data-set="favorites"
data-cmd="set"
class="width-300">
</div>


Die zugehörigen so:

favorites
Discover_Weekly

ftuiFavoritesAlias
YOUR SOUL:Ed Sheeran:Musik:nervt:Discover Weekly:Favoriten

ftuiFavoritesItems
YOUR_SOUL:Ed_Sheeran:Musik:nervt:Discover_Weekly:Favoriten

Nach einem Reload der Seite hat das Select-Widget immer "YOUR SOUL" ausgewählt.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 11 März 2017, 14:40:12
Hi setstate,

ich muss das nochmal hochholen, da ich immer noch keine Lösung für dieses Problem gefunden habe.
Sobald die Liste Auswahlwerte enthält, wird immer das erste vorausgewählt, unabhängig vom Wert in data-get (bzw. dem Reading dazu).

Ich hätte aber gerne das folgende Verhalten:
- Wenn es ein passendes Element in der Auswahlliste (bzgl. data-get) gibt, dann diese verwenden
- Wenn es kein passendes Element gibt, dann keine Vorauswahl treffen. Die Anzeige ist dann erstmal leer. Aktuell kann man das erste Element dann nicht auswählen, da es ja kein Wechsel der Auswahl darstellt.

Danke schon mal...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 17 März 2017, 21:35:39
Hi,

Ich habe noch ein anderes Problem:
Wenn die zugrundeliegenden Listen aktualisiert werden, dann landen diese nur fehlerhaft auf der Oberfläche.
Es werden Teile der vorherigen Version der Liste behalten und Teile der neuen Liste übernommen.

Das ist alles ziemlich komisch, aber auch lästig :)

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 17 März 2017, 23:13:48
Hi,

kann es sein, dass das Widget ein Problem damit hat, wenn die beiden Readings für List und ListAlias nicht zur gleichen Zeit zur Verfügung stehen, bzw. hintereinander aktualisiert werden.

Wobei ich das nicht ganz nachvollziehen kann. Es sind bei mir beides UserReadings, die vom selben Readings-Wechsel getriggert, nur halt anders zusammengebaut werden. Das sollte doch aus Sicht von longpoll "gleichzeitig" passieren, oder?

In den Listen sind teilweise nur einzelne Buchstaben als Elemente sichtbar, in den Readings selbst stehen aber stets die korrekten Werte...

Ich habe mein Problem erstmal damit gelöst, dass ich die Seiten, die ja per PageButton angezeigt werden, auf "nocache" zu setzen, sodass sie immer neu aufgebaut werden. Damit ist die Darstellung grundsätzlich immer korrekt...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: Reinerlein am 30 März 2017, 12:21:16
Hallo,

ich muss das nochmal hochholen.
Hat jemand ein Select-Widget am Laufen, wo der Klappbox-Inhalt per longpoll aktualisiert wird?

Bei mir funktioniert das einfach nicht, leider blicke ich im Code dazu auch nicht wirklich durch.

Dazu noch die Frage mit der Vor-Auswahl des Eintrags auf Basis des data-get Readings: Ich habe im Code mal gesucht, und vermute ein Problem damit, dass initial nach einem Eintrag ohne die Delimiter gesucht wird, und bei Auswahl durch den Anwender der Eintrag mit delimiter gesetzt wird (diese Auswahl bleibt ja auch bis zum nächsten Neuladen der Seite erstmal).
Leider habe meine Versuchsweisen Anpassungen keine Lösung erbracht. Aber vielleicht kann da mal jemand reinschauen, der das Element besser kennt?

Danke schon mal...

Grüße
Reinerlein
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: holle75 am 25 September 2017, 20:17:06
Uralter Thread, aber für mich besteht das selbe Problem.



<div style="width: 90%; margin: 5px 0 !important;"
data-type="select"
data-device="SqueezeBoxPlayer_ZirkusOben"
data-alias="ftuiFavoritesAlias"
data-list="ftuiFavoritesItems"
data-get="favorites"
data-set="favorites"
class="cell">
</div>

<div style="width: 90%; margin: 5px 0 !important;"
data-type="select"
data-device="SqueezeBoxPlayer_ZirkusOben"
data-alias="ftuiPlaylistsAlias"
data-list="ftuiPlaylistsItems"
data-get="playlists"
data-set="playlists"
class="cell">
</div>


funktioniert ähnlich gut wie von dir beschrieben.
Titel: Antw:Select mit data-alias "füttern"
Beitrag von: sTaN am 06 Juli 2020, 16:02:40
Auch ich muss den alten Thread mal hoch holen und muss gerade schmunzeln, dass Reinerlein, der Sonos Modul Entwickler vor dem gleichen Problem stand wie ich jetzt.  ;D
@Reinlerein: Vielleicht hast du mittlerweile eine Lösung für das Problem, dass in der Auswahlliste für meine Sonos Favoriten immer der erste Eintrag angezeigt wird, was blöd ist, wenn man genau diesen auswählen will. Mir würde es schon reichen, wenn die Liste immer ohne Vorauswahl erscheint. Aber natürlich wäre es am elegantesten, wenn er das aktuell aktive anzeigt. Auch das die Listen nach Änderung automatisch refresh's werden, ohne den Browser Cache des Tablets zu löschen.

Wie hast du das mittlerweile gelöst? Du schreibst was von nocache? Wo hast du das gesetzt bzw. wäre mir eine komplette Lösung natürlich lieber.

Aktuell sieht es bei mir wie folgt aus:
                        <div class="large middle inline">Favoriten: </div>
                        <div data-type="select"
                          data-device="Sonos_Wohnzimmer"
                          data-list="FavouritesList"
                          data-alias="FavouritesListAlias"
                          data-delimiter="|"
                          data-quote="/"
                          data-get="currentFavouriteNameMasked"
                          data-set="StartFavourite"
                          class="inline left-space w3x"
                          onchange="$('.dialog-close').trigger('click');"></div>
                      </div>


Gruß
sTaN