Seite 1 von 1

Mapping von mehreren Items aus Gruppen

Verfasst: 20. Sep 2020 17:01
von Baumtasche
Hallo zusammen,

ich habe folgendes Problem. Ich will bei einer bestimmten Aktion feststellen, welche Fenster im Haus geöffnet sind. Meine Fenster sind in der Gruppe gKontakteAll zusammengefasst. In der map "Fensterkontakte" habe ich die Items bestimmten Namen zugeordnet. Wenn nur ein Fenster offen ist, dann klappt das wunderbar, aber bei mehreren funktioniert das mapping nicht.
Der tmpMsg - String sieht folgendermaßen aus: "fkKueche_state, fkWohnz_State"
Mein Ziel ist es den String so umzuwandeln : "Fenster in der Küche, Fenster im Wohnzimmer"

Hat jemand eine Idee wie das funktionieren könnte?

MAP:

Code: Alles auswählen

fkKueche_state = Fenster in der Küche
fkWohnz_State= Fenster im Wochnimmer
....
Rule: < Auszug davon >

Code: Alles auswählen

....
tmpMsg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ name ].reduce[ s, name | s + ", " + name ]  
            val msg = transform("MAP", "fensterkontakte.map", tmpMsg)
            send(msg) // steht stellvertretend für die Pushovermeldung

Re: Mapping von mehreren Items aus Gruppen

Verfasst: 20. Sep 2020 17:24
von udo1toni
Das ist kein Wunder :) Du musst das Mapping schon in das Lambda einbauen:

Code: Alles auswählen

msg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ name ].reduce[ s, name | s + ", " + transform("MAP", "fensterkontakte.map",name) ]

Re: Mapping von mehreren Items aus Gruppen

Verfasst: 20. Sep 2020 20:16
von peter-pan
Wenn du nun mehrere Fenster hast musst du jedes mal die "fensterkontakte.map2 mit pflegen. Es geht aber auch einfacher. Ich hatte dir ja schon hier einen Tipp gegeben.

Anstatt den Item-Namen (name) kannst du auch die Item-Bezeichnung (label) übergeben, dann sparst du dir die redundante Pflege:

Code: Alles auswählen

val msg = gKontakteAll.members.filter[ i | i.state == OPEN ].map[ label ].reduce[ s, label | s + ", " + label ]

Re: Mapping von mehreren Items aus Gruppen

Verfasst: 23. Sep 2020 18:22
von Baumtasche
Vielen Dank, das hilft mir weiter