PopupButton automatisch schließen

Ich habe in einem Konfigurationsformular ein PopupButton mit einer Methode bei „onclick“. Wie kann ich das Popup automatisch schließen, wenn die Methode ausgeführt wurde? Es soll ein Wert für eine Eigenschaft übernommen werden, welcher der User dann durch „Änderungen speichern“ akzeptieren kann. Ein ReloadForm hilft mir dann leider nicht.

Uli

Versuche die visible Eigenschaft vom Objekt PopupButton per UpdateFormField auf false zu setzen.
Ich habe das bisher nur beim PopupAlert benutzt, kann also nicht sagen ob es wirklich funktioniert.
Michael

Hallo Michael,

die Button bekomme ich damit weg, das Meldungsfenster aber nicht. Geht vermutlich nicht.

Uli

Welches Meldungsfenster?
Einstellungen müssen User doch immer manuell übernehmen.
Was willst du den genau erreichen?
Michael

Dieses Popup geht auf:

Bildschirmfoto 2021-02-28 um 14.05.24

Der User klickt auf „Autorisierung starten“, dann wird eine Methode aufgerufen die einen API Token von einem Gerät abholt und in eine Property schreibt, an schließend mache ich ein UpdateFormField auf die Property API BridgeToken.

Ich möchte aber, wenn der Token abgeholt wurde, dass das Fenster (Popup) oben automatisch geschlossen wird und nicht durch den User, damit der User direkt die Änderungen der Instanzkonfiguration übernehmen kann. Der User soll sehen, dass durch das Schließen des Popus der Vorgang abgeschlossen ist.

Uli

Ich nutze dafür das PopupAlert, da du dies wie von @Nall-chan vorgeschlagen über „visible“ ausblenden kannst. Du musst dann nur über den Button auch das PopupAlert sichtbar schalten.

paresy

Ergänzend dazu würde ich den Token nicht als Eigenschaft, sondern als Attribut speichern.
Dann muss es in der Konfiguration nicht übernommen werden.
Michael

Genau. Attribut wäre definitiv zu empfehlen!

Ich habe das vorhin erst im OAuth Test Modul umgebaut - denn dort war es auch suboptimal gelöst: save token inside attribute · symcon/SymconTest@af4c520 · GitHub

paresy

Diese Diskussion möchte ich nicht erneut führen.

Es kann kein Attribut sein, da der User es selber festlegen kann. In diesem Fall muss es eine Eigenschaft sein.

Uli

Was hältst du davon eine UI zu bauen, die es dem User erlaubt das Token anzugeben und du schreibst es dann in das Attribut? :slight_smile: (Dem Aufwand mit der UI hast du schon - es wäre nur anders :))

paresy

Der Code liegt Niels vor.

Muss es jetzt aber umbauen, da IPS_SetProperty und ApplyChanges abgelehnt wurden, was ich auch nachvollziehen kann, aber ich will es einfach und idiotensicher für den User machen, falls er seinen APIToken nicht kennt.

Ich kenne ihn, also kann ich ihn auch in die Eigenschaft eintragen. Wer ihn nicht kennt, kann die obrige, automatische Funktion nutzen.

Ihr müsst auch mal die UseCases betrachten!

Uli

Dann ist es doch möglich.
Das ganze mit Eingabefeld und eigenen ‚Token speichern‘ Button in den Actions Bereich legen.
Und da drüber den PopupButton für das automatische ermitteln des Token.
Dann hat der User beide Möglichkeiten.
Michael

Das ist eine gute Idee.

Werde es die Tage mal umsetzen.

Vielen Dank für eure Unterstützung!

Uli