data-substitution mit Array

Begonnen von tomster, 12 Oktober 2018, 09:07:33

Vorheriges Thema - Nächstes Thema

tomster

Servus beinander (oder besser Servus setstate)!

Ich hab gerade ein Problem mit data-substitution, bei dem ich nicht wirklich weiterkomme.
Folgendes Szenario:
Ich lasse mir einen Kalender (=mehrere CALENDARs zusammengefasst über das CALVIEW-Modul) in einer Tabelle über Label-Widgets anzeigen. Im (von mir verwendeten) summary-Reading stehen dann Einträge wie z.B. "Max Mustermann 1970" oder "9E: Praktischer Leistungsnachweis in IT bei XY". Nun möchte ich, der Übersicht und Länge halber, einige Teile dieser Readings ersetzen, bzw. kürzen.
Wenn ich die Jahreszahl aus dem ersten Beispiel entfernen möchte, dann haut das mit

data-substitution="s/(19\d{2}|20\d{2})|21\d{2}//g"

wunderbar hin.
Auch wenn ich aus dem anderen Beispiel einige Bestandteile "ersetzen" möchte ("9E: " und "Praktischer Leistungsnachweis"), dann geht das mit

data-substitution="toString()replace('9E: ','').replace('Praktischer Leistungsnachweis','PLN')"

hervorragend.
Was leider immer mit einem Fehler

fhem-tablet-ui.min.js:1
SyntaxError: missing name after . operator

endet, ist der Versuch beide Substitutions in ein Array zu packen.

data-substitution='["s/(19\d{2}|20\d{2})|21\d{2}//g","toString()replace('9E: ','').replace('Praktischer Leistungsnachweis','PLN')"]'

Mache ich etwas falsch oder wird dieser Use-Case bei data-substitution schlichtweg nicht angenommen?

Beste Grüße,
Tom

setstate

mehrere Replacements kann man so machen:

data-substitution='["alle Fenster sind geschlossen.","alles geschlossen","FensterRechts|FensterLeft|Fenster","<br>","noch offen",""]'

"alle Fenster sind geschlossen." -> "alles geschlossen"
"FensterRechts|FensterLeft|Fenster" -> "<br>"
"noch offen" -> ""

tomster

Danke!
Auch wenn Du mir eigentlich nur nochmal die Syntax erklärt hast, die ich bereits vorher vermeintlich verstanden hatte, hat es nun Klick gemacht.
Natürlich braucht es ein "Pärchen": "Begriff(e) -> "Substitution(en)". Das war natürlich beim Ersetzen durch RegEX nicht gegeben; da war die Substitution ja schon auf der "Begriffeseite" beinhaltet.
Jetzt läuft es. Danke für den Schubser!