set Befehle mit mehreren (vordefinierten) Argumenten?

Begonnen von Adimarantis, 04 April 2022, 21:18:04

Vorheriges Thema - Nächstes Thema

Adimarantis

Hallo,

meine "set" Liste fängt langsam an unübersichtlich zu werden.
Da man die Liste weder selbst Sortieren, Gruppieren oder mit Trennern versehen kann, hatte ich jetzt die Idee, ob man sie nicht zweistufig machen kann.
Also sowas wie
Option:multiple:suboption1,suboption2,suboption3:TextField
Sollte in einem Pulldown mit 3 Unteroptionen und einem weiteren Textfeld resultieren. Die gewählte Unteroption wird einfach dem Textfeld mit Leerzeichen getrennt vorangestellt übergeben.

Motivation:
Ich habe mehrere Set Befehle die sich auf groups oder auf contacts beziehen.
Statt ein Durcheinander mit "addContact addGroup joinGroup removeContact" usw. gäbe es nur ein "set group" und ein "set contact" und im zweiten Argument dann "add, remove, join..."
Man müsste dann zwar zweimal Klicken, würde die Optionen aber schneller finden (bei mehr als 10 Einträgen wirds schon langsam recht unübersichtlich).

Alternativ könnte eine vom Modulprogrammierer vorgegebene Sortierung mit Trennlinien (oder Unterpunkten wie bei den Attributen) ebenfalls helfen. (Die Diskussion hatten wir aber schon mal)

Natürlich könnte man jetzt auch die Namen umdrehen (contactAdd, groupAdd, groupRemove) - finde ich aber nicht sehr intuitiv und führt bereits bei manchen Modulen dazu, dass Befehle mit vorangestelltem "_" implementiert wurden, damit sie an erster Stelle stehen.

Ideen?

Gruß.
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

rudolfkoenig

Ich habe ein "widgetList" Widget gebaut:
ZitatwidgetList,... - show a list of widgets. The arguments are concatenated, and separated be the length of the following argument list.
Example: widgetList,3,select,opt1,opt2,1,textField
Note: the values will be sent as a comma separated list, and only preloaded widgets can be referenced.

Die Definition:
define d dummy
attr d readingList many
attr d setList an:1,2,3 aus:noArg many:widgetList,3,select,opt1,opt2,1,textField
attr d webCmd many

schaut wie angehängt aus.

Wermutstropfen: das Ausfuehren des Befehls ist equivalent zu "set d many opt1,TestMe", d.h. die Argumente werden durch Komma getrennt.

Adimarantis

Das schaut doch ganz vielversprechend aus.
Werde damit ein wenig rumprobieren.
Das Komma muss ich halt "wegparsen", so dass das Modul auf mit und ohne reagiert (sonst ist es bei direkter Nutzung der Befehle aus FHEM etwas ungewohnt)

Danke
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)