OpenObjectButton mit dynamischer ID

@Dr.Niels
ich möchte, nachdem ich die Variable ausgewählt habe, die Möglichkeit habe direkt dorthin zu springen.

Bildschirmfoto 2021-05-10 um 16.16.54

Uli

Ach, innerhalb des „Listenelement bearbeiten“-Dialogs? Dort ist keine Dynamik möglich. Offiziell funktioniert da noch nicht mal der OpenObjectButton (der Button übrigens auch nicht), siehe Doku von List. Der Dialog ist auch nicht dafür gedacht, dass dort irgendwelche Logik passiert. Wenn du da etwas eigenes machen möchtest, dann solltest du eher auf das onClick hin ein eigenes Popup öffnen. Dort kannst du dann deine Wünsche auch per Dynamik umsetzen.

@Dr.Niels

Der Info Button ist in der Liste „visible“: false

Im „Listenelement bearbeiten“ funktioniert er. Dort mache ich aber nur folgendes:

„onClick“: „if($ID != 0){print_r(IPS_GetVariable($ID));}“

Uli

Es mag sein, dass es aktuell funktioniert. Aber das ist undefiniertes und nicht vorgesehenes Verhalten. Verlasse dich also nicht darauf, dass das zukünftig auch so bleiben wird.

@Dr.Niels
@paresy

dann beides als feature request für zukünftige Zwecke.

Uli

@Dr.Niels
Hallo Niels, habe jetzt den OpenObject Button ausserhalb der Liste erstell und deine Anweisungen oben befolgt. Vielen Dank für den Tip, das funktioniert als Workaround.
Schönen Feiertag !

Uli

Ich möchte das Thema nochmal aufgreifen.

Ich habe den Fall, das ich eine (readonly)-Liste (im Action-Bereich) eines Moduls habe, das die mit dieser Instanz diverse Objekte auflistet.
Und da wäre es natürlich schick, wenn ich dann betroffene Objekte (Instanzen, Ablaufpläne etc) aufrufen kann.
Natürlich könnte ich statt einer Liste zu nutzen, ein Formular dynamisch erzeugen, das dann alle Objekte auflistet mit einem OpenObjectButtom -Element für jedes Objekt erzeugt … aber so doll wäre das ja nicht.
Gibt es da eine Perspektive oder habt ihr noch eine andere Idee?

Ich weiß nicht 100% was Du machen willst, aber ich bastele auch gerade an einem sehr dynamischen Konfigurationsdialog in Verbindung mit Listen.

Ich habe es jetzt so gelöst das wenn eine Zeile in der Liste selektiert wird (grau) dann sende ich die Auswahl per IPS_RequestAction und machen Update auf „value“ usw. eines Buttons im Formular den man dann wieder drücken kann!

Wenn es das ist - meld dich einfach im Chat!

vielen Dank für den Tip.
Habe ich aufgegriffen, mache das nicht via RequestAction sondern per UpdateFormField. Da UpdateFormField ja keine globale IPs-Funktion ist musste ich dafür eine eigene winzige Wrapper-Funktion erstellen (bisschen tricky, seil es Bestandteile einer von mir global verwendeten Bibliothek ist).

Halt ein bisschen „durchs Knie ins Auge“, aber machbar.
Was mich bei so etwas etwas stört ist die Tatsache, das solche Funktionen dann auch im Script-Editor angeboten werden, eine Unterscheidung zu „echten“ public-Funktionen gibt es ja leider nicht

Freut mich, für welches Modul machst Du es?

zuerst hierfür: https://community.symcon.de/t/modul-symcon-notifications/ aber ist Bestandteile meiner libs/CommStubs/common.php und wird damit bei ein paar anderen meiner Module auch Verwendung finden

Deswegen benutze ich dafür immer IPS_RequestAction mit einer ausgedachten IDENT und Value nach wunsch. :grinning:
Michael

Dann habe ich den Gedanken vielleicht noch nicht ganz verstanden. RequestAction ist doch dafür da, auf eine Variable eine Aktion auszulösen / einen Wert setzen.
Das hat doch einen Ideng und nur einen Wert, UpdateFormField hat aber ja drei Parameter …
D.h. entweder ist im Wert json-kodiert die drei Angaben (Feld, Parameter, Wert) enthalten

RequestAction(‘UpdateFormField‘, json_encode([‘Feld‘ => …))

oder im Ident das irgendwie systematisch „verschlüssele“

RequestAction(‘UpdateFormField.<Feldname>.<Parameter>‘, <Wert>)

hmm, muss ich mal drüber nachdenken… damit kann man natürlich die pseudo-public-Funktionen verbergen

Sorry, habe oben das IPS_ unterschlagen :sweat_smile:
Das ist eine Funktion welche an keine Variable gebunden ist und den Ident und Value an die Instanz übergibt.
Michael

ich finde in der Doku nur RequestAction (ohne IPS_)? (RequestAction — IP-Symcon :: Automatisierungssoftware) - schau ich schräg?

Undokumentiert :slight_smile:
Nutze ich z.b. um Statusänderung aus dem Thread der MessageSink zu lösen.

Michael

aha!
da werde ich mal morgen mit experimentieren. danke

Danke, schaue ich mir mal an!

Hatte aber in meiner Anleitung IPS_ mit hingeschrieben :stuck_out_tongue_winking_eye:

so, ich habe es auf IPS_RequestAction umgestellt.
merkwürdig: anders als hier beschrieben, kann ich kein array übergeben, ich muss da ein json_encode machen

Ja, json_encode nutze ich auch!