[gelöst] Befehle des Attributs webCmd mehrzeilig mit Titel darstellen

Begonnen von Ellert, 30 Mai 2017, 16:12:21

Vorheriges Thema - Nächstes Thema

Ellert

Ich hätte Bedarf an einer mehrzeiligen Darstellung der Befehle des Attributes "webCmd" und einer Beschriftung der Befehle in der Gerätezeile, siehe Beispiel.

Es könnte mit einer ReadingsGroup gelöst werden, das erfordert jedoch eine extra Definition, die sich nicht harmonisch in die Raumübersicht einpasst.

Als Workaround könnte man die Befehle im Attribut "webCmd" in eine Tabelle einbinden, z.B
<table><tr><td><font color='black'>Bezeichnung&nbsp;1</font></td>:setting_1:<td><font color='black'>Bezeichnung&nbsp;2</font></td>:setting_2:</tr><tr><td><font color='black'>Bezeichnung&nbsp;3</font></td>:setting_3:<td><font color='black'>Bezeichnung&nbsp;4</font></td>:setting_4:</tr></table>
Das ist wenig komfortabel, da im Attribut "webCmd" der Text nicht umgebrochen werden kann.
Das Style-Attribut kann nicht genutzt werden, da der Doppelpunkt die Befehle trennt.
Der HTML-Text wird auch als Befehl behandelt.

Vorausgesetzt, dass auch für Andere ein Bedarf für eine mehrzeilige Darstellung der Befehle besteht, könnte dann FHEMWEB erweitert werden?

Hier das Beispiel für "Raw definiton"

defmod settings dummy
attr settings readingList setting_1 setting_2 setting_3 setting_4
attr settings room 0_Test
attr settings setList setting_1:slider,0,10,1000\
setting_2:ein,aus,auto\
setting_3:time\
setting_4:time
attr settings stateFormat n/a
attr settings webCmd <table><tr><td><font color='black'>Bezeichnung&nbsp;;1</font></td>:setting_1:<td><font color='black'>Bezeichnung&nbsp;;2</font></td>:setting_2:</tr><tr><td><font color='black'>Bezeichnung&nbsp;;3</font></td>:setting_3:<td><font color='black'>Bezeichnung&nbsp;;4</font></td>:setting_4:</tr></table>
attr settings widgetOverride (setList|webCmd):textField-long

setstate settings n/a
setstate settings 2017-05-30 13:54:06 setting_1 80
setstate settings 2017-05-30 13:59:15 setting_2 aus
setstate settings 2017-05-30 13:51:24 setting_3 03:00
setstate settings 2017-05-30 13:37:43 setting_4 12:10

 

rudolfkoenig

Bin nicht sicher ob ich es verstanden habe, deswegen eine (evtl doofe) Wiederholung der Aussagen/Fragen:
- mehrzeilige webCmd -> wieso nicht
- Sowas als HTML zu spezifizieren ist kompliziert und fehleranfaellig -> ja, so sehe ich das auch
- bei Bedarf wuerdest Du einen Patch bauen -> lieber waere es mir, wenn ich das baue, ich brauche nur eine Idee fuer den neuen Syntax.

justme1968

wenn es wirklich nur um die mehrzeiligkeit geht zwei vorschläge:

- \n erlauben und dort die zeile umbrechen. in verbindung mit textField-long (per widgetOverride) könnte man das ganz natürlich eingeben

- statt alles in html zu machen nur <br> erlauben und dort die zeile umbrechen.

wenn es noch mehr formatierungsmöglichkeiten sein sollen (font, farbe, ...) würde ich das eher in readingGroup oder ähnlichem sehen und nicht mehr im standard webCmd. wegen dem einfügen bzw. aussehen kann man sicher noch etwas machen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Ellert

Zitat von: rudolfkoenig am 30 Mai 2017, 19:42:08
Bin nicht sicher ob ich es verstanden habe, deswegen eine (evtl doofe) Wiederholung der Aussagen/Fragen:
- mehrzeilige webCmd -> wieso nicht
- Sowas als HTML zu spezifizieren ist kompliziert und fehleranfaellig -> ja, so sehe ich das auch
- bei Bedarf wuerdest Du einen Patch bauen -> lieber waere es mir, wenn ich das baue, ich brauche nur eine Idee fuer den neuen Syntax.

Ehrlich gesagt, ich habe das Zusammenspiel von FHEMWEB und fhemweb.js beim Erstellen der Widgets noch nicht soweit durchdrungen, dass ich einen Patch bauen könnte. Daher wäre es mir lieber Du würdest es machen.


Man könnte ein globales Attribut einführen "webCmdLabel".

Das Attribut enthält Labels für jeden Befehl in "webCmd", getrennt durch Doppelpunkt oder einen Zeilenumbruch.
Der Zeilenumbruch trennt nicht nur die Labels, sondern steuert auch einen Zeilenumbruch in der Gerätezeile.
Default-Widget für "webCmdLabel" könnte dann textField-long sein.

Das hätte den Vorteil, dass die Syntax des Attributes "webCmd" nicht angepasst werden muss.

Beispiel, das zu dem angehängten Bild aus dem ersten Beitrag passt:
webCmd setting_1:setting_2:setting_3:setting_4
webCmdLabel Bezeichner_1:Bezeichner_2\nBezeichner_3:Bezeichner_4



Oder man lässt im Attribut webCmd <td> und \n zu, um Labels anzugeben und den Zeilenumbruch zu steuern.
Hier wäre zu überlegen, ob das Default-Widget für "webCmdLabel" dann textField-long sein sollte.

Beispiel, das zu dem angehängten Bild aus dem ersten Beitrag passt:
webCmd <td>Bezeichner_1</td>setting_1:<td>Bezeichner_2</td>setting_2\n<td>Bezeichner_3</td>setting_3:<td>Bezeichner_4</td>setting_4


Styles angeben zu können ist nicht erforderlich, es sollten die Default-Farben verwendet werden (schwarz fürs Label, grün fürs Widget).

Für weitergehende Formatierungen könnte eine readingsGroup verwendet werden, da stimme ich justme1968 zu.

Damit wäre dann dies https://forum.fhem.de/index.php/topic,70007.0.html nicht mehr unbedingt erforderlich und dieser Wunsch könnt leichter bedient werden https://forum.fhem.de/index.php/topic,72578.0.html



rudolfkoenig

Habe webCmdLabel jetzt implementiert:

ZitatwebCmdLabel
Colon separated list of labels, used to prefix each webCmd. The number of labels must exactly match the number of webCmds. To implement multiple rows, insert a return character after the text and before the colon.

Siehe auch den Anhang.

Ellert

Leider funktioniert webCmdLabel nicht für Readings und Widgets, das war jedoch meine ursprüngliche Absicht.

Hier das Beispiel aus dem Anhang für Raw definition:
defmod du9 dummy
attr du9 readingList a b c d
attr du9 room 0_Test
attr du9 setList a:time b:selectnumbers,1,1,12,0,lin c:time d:selectnumbers,1,1,12,0,lin
attr du9 webCmd a:b:c:d
attr du9 webCmdLabel Beginnzeit:Startmonat\
:Endzeit:Endmonat

setstate du9 2017-08-06 17:33:10 a 12:00
setstate du9 2017-08-06 18:04:03 b 1
setstate du9 2017-08-06 17:33:07 c 12:00
setstate du9 2017-08-06 18:04:10 d 1




rudolfkoenig

Danke fuer die Raw definition, ich habe eine neue Variante eingecheckt.
Siehe auch den Anhang.