Ablaufpläne: Bedingte Blöcke (WENN… DANN… SONST…)

Das finde ich auch wirklich super!

Ein paar Anmerkungen:

  • @pierre-gilles, wie fügst du einen neuen Aktionsblock hinzu? Ich sehe kein +
  • Die Bezeichnung „Only continue if“ stört mich, weil das logischerweise bedeutet, dass es kein „Then“ oder „Else“ gibt. In deinem Video hattest du einfach „Conditions“ verwendet, was ich sehr gut fand
  • Ich finde den Text „If all conditions are met …“ seltsam, weil man direkt darunter ein „+OR“ sieht. Das verwirrt mich, denn wenn ich ein OR habe, sind nicht alle Bedingungen erfüllt, sondern nur eine davon (ok, es gibt „+ Add condition“ darunter, aber das ist nicht offensichtlich/verständlich)
  • Ich mag es, zu wissen, wo man sich in der Szene befindet, mit den 1.2.Then.xx, aber beim Betrachten deines letzten Beispiels finde ich das optisch schwerfällig… sehr persönliche Meinung, kein böser Wille in meinem Kommentar.
  • Machen wir ein zentriertes „+ Add action“ für IF/THEN/ELSE und passen wir es für alle anderen „normalen“ Blöcke an oder lassen wir die anderen so? :
    Persönlich bevorzuge ich diesen, weil alle mit dem Block verbundenen Funktionen gruppiert sind (bewegen/hinzufügen/löschen).

Jedenfalls verspricht das eine Menge guter Dinge, die in den Szenen kommen werden, ich kann es kaum erwarten, es in der Produktion zu haben :hugs:

Wenn Gladys auf deiner Seite auf Französisch konfiguriert ist, dann wird es auch auf Französisch sein.

danke @Will_71

Wie aktuell in Produktion :slight_smile: Es ist automatisch, ich habe nichts daran geändert.

Ich denke, du vermischst hier mehrere Dinge!

Achte nicht auf die Übersetzungen im Moment, sie sind noch nicht gemacht.
Ich arbeite gerade nur am UI.

Ich mag den kleinen „+ add action“-Button unten überall :slight_smile:

Ich habe gerade getestet und es ist mir gar nicht aufgefallen, dass beim Hinzufügen einer Aktion ein neuer Block erscheint, super der Automatismus!!

Punkt 2: ok
Punkt 3: ok, wir werden es mit der Nutzung sehen

Dem stimme ich zu!

Und diese Vorschlag ist logisch und relevant.

Darin stimme ich auch zu, aber genau das habe ich im Mockup gemacht, um die Mehrdeutigkeit zu beseitigen. Es gibt diesen Text am Anfang des Abschnitts „Wenn…“: Wenn alle unten stehenden Bedingungen erfüllt sind, wird die Szene mit den Blöcken fortgesetzt, die im Abschnitt „Dann…“ definiert sind. Andernfalls werden die im Abschnitt „Sonst…“ definierten ausgeführt.

Hallo zusammen!

Ich bin heute gut mit der Entwicklung vorangekommen und habe ein erstes testbares Ergebnis :tada:

Es ist noch nicht vollständig finalisiert, aber ihr könnt bereits mit dem Testen beginnen und mir euer Feedback geben.

Der PR ist hier für alle, die es in ihrer Entwicklungsumgebung ausprobieren möchten:

https://github.com/GladysAssistant/Gladys/pull/2239

Ich habe einen Docker-Build gestartet:

gladysassistant/gladys:scene-if-then-else

Dieser Build sollte in etwa 50 Minuten fertig sein (gegen 17:50 Uhr heute).

Fragen

Eine der Fragen, die ich habe, betrifft das Drag & Drop, das nun komplexer zu handhaben ist. Da die Aktion „Bedingung: Wenn… Dann… Sonst…“ ein massiver Block ist, der selbst Aktionen enthält, ist es nicht möglich, ihn frei in andere Aktionen per Drag & Drop zu verschieben.

:right_arrow: Derzeit habe ich sichergestellt, dass diese Aktion nur zu einer anderen Aktion desselben Typs verschoben werden kann. Das mildert das Problem etwas ab, aber man wird sehen, ob das ideal ist. Ich bin für euer Feedback offen!

@StephaneB, da du diese Entwicklung geplant hast, interessiert mich deine Meinung besonders. Lass mich wissen, was du davon hältst! :blush:

Cool @pierre-gilles, dass du so weit gekommen bist, dass es bereits testbar ist. Aber brauchen wir eine Entwicklungsumgebung oder wird es einen Link zu Gladys Plus geben, um testen zu können?

Man muss den Container / oder eine Entwicklungsumgebung starten!

Kein Gladys-Plus-Link möglich, da die Änderungen sowohl frontend- als auch backendseitig sind.

Ah ja, logisch. Wie starte ich den Container? Falls du das schon mal irgendwo aufgeschrieben hast, schick mir gerne den Link zur richtigen Seite :wink: (Ich hab ein bisschen gesucht, aber nichts gefunden…)

Hier ist es :slight_smile:

Also Spoiler für diejenigen, die es nicht ausprobiert haben: Es ist einfach toll, Szenen mit dem neuen Mechanismus « wenn dann sonst » vorstellen zu können!!

Bravo @pierre-gilles

Ein paar Anmerkungen zuerst:

  • Man wird sich an die neue Position des Buttons « + Neue Aktion » gewöhnen müssen, aber das ist in Ordnung
  • Gut gemacht, die Liste der Bedingungen: Ich hatte völlig vergessen, dass es auch « Wenn Alarm » und « Wenn Haus… » gibt. Aber wäre es nicht sinnvoll, sie in « Bedingung auf Alarm », « Bedingung auf leeres Haus » und « Bedingung auf nicht leeres Haus » umzubenennen?
  • Genauso wie « Dann » und « Sonst » zusammengeklappt/auseinandergeklappt werden können, denke ich, dass die Bedingung auch zusammengeklappt werden könnte.
  • Die Einrückung der Abschnitte « Dann » und « Sonst » funktioniert gut, finde ich, auch wenn mehrere Ebenen von Bedingungen verschachtelt werden. Im Gebrauch wird man sich vielleicht ein bisschen verlieren, wenn die Szenen zu lang werden, aber jeder sollte sich auf vernünftige Dinge beschränken, damit es lesbar bleibt…
  • Wenn die Abschnitte « Dann… » und « Sonst… » zusammengeklappt sind, finde ich, dass eine Information fehlt, um zu visualisieren, ob einige Blöcke definiert sind oder nicht. Vielleicht eine Information wie « > Dann (3 Aktionsblöcke) » und « > Sonst (0 Aktionsblöcke) » ? Und genauso für die Bedingung, wenn du sie zusammenklappbar machst.
  • Ich denke, der Name der Aktion ‹ Bedingung wenn dann sonst › ist nicht der passendste. Ich verstehe, dass es ein einfacher Name ist, aber mit dieser Aktion fügt man keine Bedingung hinzu, wie man es mit den anderen fünf Aktionen « Bedingung… » tut. Diese neue Aktion hat wirklich das Ziel, zwei Aktionspfade hinzuzufügen… Nun, « Bedingte Blöcke » scheint mir passender. Aber das ist ein bisschen hässlich, hehe :wink: Einige Alternativen: « Struktur Wenn… Dann… Sonst… », « Aktionsblöcke gemäß Bedingung (Wenn… Dann… Sonst…) »

Und dann ein paar kleine Fehler während meiner Tests:

  • In einem Block habe ich eine Aktion « Bedingung wenn dann sonst » erstellt und dann eine Aktion « Nachricht senden ». Ich konnte die Nachricht-Aktion nicht an die Stelle der Bedingungsaktion verschieben. Obwohl das Gegenteil gut möglich ist.
  • Ich habe Tests zum Verschieben von Aktionsblöcken durchgeführt:
    • Ich habe die Oberfläche zum Absturz gebracht, als ich versucht habe, einen Aktionsblock aus dem Abschnitt « Dann… » in den Abschnitt « Sonst… », der zusammengeklappt war, zu verschieben (der Block, den ich bewegen wollte, blieb grau und hat sich nicht bewegt…)
    • Ich konnte einen Aktionsblock aus dem Abschnitt « Dann… » nicht in den Abschnitt « Sonst… », der auseinandergeklappt war, verschieben (der Block hat sich nicht bewegt)
    • Als ich versucht habe, einen Aktionsblock aus dem Abschnitt « Dann… » in einen Block außerhalb der Aktion « Bedingung Wenn Dann Sonst » zu verschieben, hatte das einen unerwünschten radikalen Effekt: Die Aktion « Bedingung Wenn Dann Sonst » ist komplett verschwunden.
  • Ich habe eine einfache Szene erstellt: ein Block 1, der die Nachricht « Vorher » anzeigt, Block 2 mit einer zeitlichen Bedingung, der « Dann » oder « Sonst » je nach Uhrzeit anzeigt, und ein Block 3, der danach anzeigt. Bei der Ausführung hatte ich oft ‹ Vorher Dann Nachher › oder ‹ Vorher Sonst Nachher ›, aber es kam vor, dass ich ‹ Vorher Nachher Sonst › und sogar ‹ Nachher Vorher Sonst › (und ebenso bei den ‹ Dann ›) hatte. Ist das nicht seltsam? Es ist nur der Anzeige-Fluss in « Diskussion », der sich umkehren kann, aber die Blöcke wurden in der richtigen Reihenfolge ausgeführt? Oder gibt es ein Problem?

Hallo,
ich habe es gerade schnell getestet, es ist wirklich toll!

Bisher gefundener Bug (?): Wenn man einer Dann- oder Sonst-Aktion eine Aktion hinzufügt, erscheint ein zweiter Aktionsblock (normal). Wenn man die Aktion des ersten Blocks löscht, verschwindet der zweite nicht und kann nicht gelöscht werden:


In einem „klassischen“ Block, wenn man die Aktion des ersten Blocks löscht, hat man die Möglichkeit, zu löschen:

[/details]

:+1: Bei mir funktioniert es (Firefox/macOS) in beide Richtungen

:+1: Man kann eine Aktion von einem Dann/Sonst-Block einer Bedingung in einen Dann/Sonst-Block einer anderen Bedingung auf derselben Ebene oder einer höheren/niedrigeren Ebene (Einrückung) verschieben, oder sogar in einen einzelnen Aktionsblock.

  • Bug: Ein Dann-Block 2.1.A.3. (z. B.) kann nicht auf den Dann-Block 2.1.A.2 verschoben werden, um dessen Platz einzunehmen

  • Bug: Es ist möglich, eine Aktion Nachricht senden oder Steckdose einschalten in den Block Bedingung zu verschieben, obwohl man diese Art von Aktion in Bedingung nicht erstellen kann

Ich werde es morgen noch einmal testen, um sicherzugehen. Ich nutze Firefox und Ubuntu, aber auf einem kleinen Laptop, den ich schon lange nicht mehr aktualisiert habe…

Danke an alle für euer Feedback! :slight_smile:

Ich denke, es ist besser, die Verständlichkeit der Kohärenz vorzuziehen :slight_smile: « Wenn das Haus leer ist » ist meiner Meinung nach viel klarer.

Intuitiv bin ich da weniger einverstanden, da es sich um ein « Top-Level »-Element handelt, möchte ich es lieber sichtbar halten. Vielleicht liege ich aber falsch, vielleicht ist es in der Praxis nicht praktisch

Nicht dumm! Ich werde sehen, was möglich ist :slight_smile:

Ich verstehe, was du meinst, aber für mich ist das Ziel wirklich die Verständlichkeit für den Endnutzer. Es muss konkret sein, nicht abstrakt. Also typischerweise ist alles, was « Struktur » heißt, zu abstrakt, der Endnutzer wird es nicht verstehen.

Ich denke, « Wenn… Dann… Sonst » sollte Teil des Titels sein, aber für den Präfix bin ich offen :slight_smile:

Ok, ich werde das Drag & Drop untersuchen.

Wenn deine Szene sehr schnell ausgeführt wird, können die Nachrichten alle in derselben Millisekunde erstellt werden und daher in einer zufälligen Reihenfolge sein.

Könntest du es noch einmal testen, indem du « Warten »-Blöcke (10 ms reichen aus) hinzufügst, um zu überprüfen, ob es sich nicht um einen Bug handelt?

Tatsächlich, ich werde das korrigieren :slight_smile:

Das ist wirklich nicht schlecht!

Hallo zusammen :slightly_smiling_face:

Ich habe dank eures Feedbacks Korrekturen vorgenommen, vielen Dank nochmal!

Ein neues Docker-Image ist verfügbar:

gladysassistant/gladys:scene-if-then-else

:backhand_index_pointing_right: Tutorial: Ein Docker-Testimage starten

:warning: Falls ihr bereits das alte Image gestartet habt, denkt daran auszuführen:

docker pull gladysassistant/gladys:scene-if-then-else

Ich habe es getestet, indem ich 10 ms bzw. 100 ms Warteaktionen parallel zu jeder « Nachricht senden »-Aktion hinzugefügt habe, und es gibt immer noch Vertauschungen in der Diskussion (z. B. vorher => nachher => dann, und dann => nachher => vorher). Wenn ich die Wartezeiten auf 1 s erhöhe, gibt es keine Vertauschungen mehr. Ich weiß nicht genau, ob das bedeutet, dass es einen Bug gibt…

Ich verstehe das Bedürfnis, verständlich zu sein. Aber wenn du das Wort ‹ Bedingung › in der Dropdown-Liste eingibst, findest du nicht alle und ich finde das schade. Na ja, nicht so schlimm, nur schade :wink: Und wie würdest du es finden, es in « Bedingung 'Wenn das Haus leer ist' » umzubenennen?

Ich schlage "Bedingte Aktionen 'Wenn… Dann… Sonst…'

Ich habe das gemacht und dann angenommen, dass man auch docker container restart scene-if-then-else ausführen muss, und es wurde ohne Fehler ausgeführt.

Aber beim Bearbeiten der Szene sehe ich den Tag nicht, den du hinzugefügt hast, um die Anzahl der Aktionsblöcke im „Dann“ oder „Sonst“ anzuzeigen. Ist das normal? Oder bedeutet das, dass das Update nicht durchgeführt wurde?