Möglichkeit, Szenen zu kategorisieren / zu gruppieren

Funktionsbeschreibung

Hallo :slight_smile:
Wenn man mit Gladys eine recht umfangreiche Installation hat, hat man auch viele Szenen!

Ich denke, es wäre übersichtlicher und einfacher in der Handhabung, wenn man seine Szenen in Kategorien einteilen könnte (z. B. als Band sichtbar), die man ausblenden und einblenden kann.

Oder ähnlich wie bei den Dashboards mit einer Dropdown-Liste?

Danke :slight_smile:

Ich denke, was kompliziert ist, ist die Frage, ob wir vordefinierte Kategorien wollen… oder die Möglichkeit, selbst Kategorien zu erstellen. Denn da jeder Benutzer eine Szene erstellen möchte, die ihm eigen ist, wird es mit den Kategorien genauso sein.

Ich finde auch, dass wir herausfinden müssen, wie wir die Szenen organisieren, um sie besser zu verwalten.

Ich hatte mir überlegt, sie als Liste anzuzeigen, deren Reihenfolge man per Drag&Drop ändern kann.
Dadurch könnte man mehr auf einer einzigen Seite anzeigen, mit besserer Lesbarkeit.

Umso mehr, als man sich mit einer angemessenen Benennung recht leicht zurechtfinden kann:

[LICHT] Alle Lichter ausschalten bei Abwesenheit
[LICHT] Helligkeit am Abend reduzieren
[ALARM] Post im Briefkasten
[ALARM] Temperatur < 15°
[INFO] Der Hundefutternapf ist leer

Usw…

Ja, ich dachte bereits an Kategorien, die von den Nutzern erstellt werden, so wie wir es für die Dashboards tun.

Das Ziel wäre, meiner Meinung nach, eine mögliche Trennung zwischen den gewünschten Szenen zu haben.

Zum Beispiel könnte ich in meinem Fall die Szenen meines Aquariums, die Beleuchtung des Wohnzimmers und die Szenen des Alarmsystems trennen.

Warum nicht, ich könnte mir gut ein System mit filterbaren Tags vorstellen! Da muss man mal drüber nachdenken :slight_smile:

@Checconio Da du sagst, dass deine Installation immer umfangreicher wird, wärst du interessiert, wenn ich dich für meine YouTube-Serie „Gladys Assistant bei dir zu Hause“ interviewen würde? (https://www.youtube.com/playlist?list=PLkBwN_hZI5TeMkv-sZ0UdU4AVxIOHefIG)

(Wir können das auch privat besprechen, falls du möchtest, damit wir das Thema hier nicht unnötig vollspammen)

Das ist eine super Idee :+1: zumal es für den Nutzer in der Regel total einfach zu bedienen ist und sehr flexibel ist: eine Szene kann mehrere Tags haben.

Ja, ein Tag kann es ermöglichen, dieselbe Szene in mehreren „Anzeigen“ darzustellen, was tatsächlich besser ist als das, was ich im Sinn hatte :slight_smile:

Kleines Update, weil mich das langsam interessiert :smiley:
Ich habe eine Szene mit Eltern, die auf einen Bewegungssensor auslöst.
Diese Szene löst nur Szenen parallel aus, die wiederum andere auslösen ^^
Dadurch habe ich viele Szenen und das wird schnell verwirrend :smiley:

Und so weiter ^^

Ich lerne gerade dieselbe Technologie wie Gladys für ein privates Projekt.
Wenn ich sie gut beherrschen würde, würde ich mich vielleicht an die Entwicklung der Funktion zum Testen machen ^^

Kleiner Hinweis, um daran für die Entwicklung zu denken.

Außerdem gab es den Funktionswunsch bereits seit Oktober 2021:

@Pasdesushi, @PhilippeMA, @Psoy (ich sehe, dass du für beide gestimmt hast), @syper und @Kalvin könntet ihr vielleicht eure Stimmen auf diesen hier zusammenlegen und den anderen schließen (die Diskussion bleibt zugänglich)?

Hallo,
Ich habe einen kleinen Test durchgeführt, indem ich ein Tag-System in den Szenen eingerichtet habe.





Ich habe die Suche geändert, um nach Tags und Titeln zu filtern.

Entspricht das Ihren Anforderungen?

Ich finde das super, das entspricht genau dem, was ich brauche.

Kleine ästhetische Frage: Ich finde, die Tags sollten anders ausgerichtet sein, nicht zentriert oder nicht an dieser Stelle in den Boxen.

Super Entwicklung, funktional ist es toll, aber ich denke, es gibt noch ein bisschen Arbeit am Design zu tun :smiley:

Bearbeitung

Bei der Bearbeitung ist es seltsam, Tags in einer riesigen Textarea zu haben, die 100% der Bildschirmbreite einnimmt

Vielleicht können die Tags normal auf grauem Hintergrund angezeigt werden, und es gibt einen kleinen „+“-Button, um Tags hinzuzufügen (und ein Kreuz auf jedem Tag, um es zu löschen)

So in etwa:

Ich denke, es ist wichtig, die vorhandenen Tags zu sehen, um eine Szene einem bereits bestehenden Tag zuzuordnen.

Filterung

Man sollte ein Tag-basiertes Filtersystem einbauen, so in etwa:

Bei den Karten muss ich denken, dass man ein bisschen umorganisieren sollte, um es visueller zu machen :slight_smile:

Ein Beispiel von Dribble:

(Ich will das auf keinen Fall machen, es ist nur ein Beispiel :stuck_out_tongue: )

Du hast recht, ich habe einfach eine Lib « react-tag-input-component » verwendet

Okay, ich sehe nichts Ähnliches in einer Lib im Internet. Ich werde wahrscheinlich mein eigenes Komponent erstellen. Soll ich versuchen, es so generisch wie möglich zu gestalten, damit wir es an anderer Stelle verwenden können?

Ja, jetzt, wo du es sagst, ist es offensichtlich.
Ich denke, ich werde Änderungen in den Modellen vornehmen müssen, denn bisher bin ich von einem String-Array in den Geräten ausgegangen. Aber um auf alle Tags aller Szenen zugreifen zu können, denke ich, dass ich eine Tabelle « tags » und eine Tabelle « device_tag » erstellen muss. Und daher neue CRUD-Routen hinzufügen, um die Tags zu verwalten, was denkst du?

Wieder einmal denke ich, dass die Hinzufügung einer Tabelle « tags » wichtig ist, da dies verhindert, dass alle Szenen durchlaufen werden müssen, um alle Tags zu erhalten.

Sollten wir nicht die Tabellenansicht der Szenen aufgeben und einfach eine Liste verwenden? Denn wir fügen immer mehr Dinge zur Szenenansicht hinzu und haben immer weniger Platz.

Ja, das wäre besser :slight_smile:

Ich nehme an, du meinst « Szenen » und nicht Geräte

Tatsächlich bevorzuge ich einen relationalen Ansatz, wir sind eher relational im Projekt :slight_smile:

Ich sehe 2 Optionen:

  1. Entweder wie du es beschreibst, eine Tabelle « t_tag » und « t_tag_scene »
  2. Oder eine einzige Tabelle « t_tag_scene », die die Beziehung zwischen einer Szene und einem Tag (als Text) herstellt
t_tag_scene:
- scene_id uuid
- name text

Um alle verfügbaren Tags zu kennen, reicht es aus, folgendes auszuführen:

SELECT DISTINCT name FROM t_tag_scene

Die Option mit der Relationstabelle ist gut, falls wir wirklich zusätzliche Optionen für die Tags hinzufügen wollten, aber in unserem Fall hier ist es vielleicht Overkill

Ich würde persönlich eher Option 2 bevorzugen, was denkst du?

Ich denke nicht, wir müssen nur die Anzeige innerhalb der Karte neu überdenken :slight_smile:

@pierre-gilles:
Ich habe einen kleinen Vorschlag mit der Lib « react-select », die wir bereits in Gladys verwenden.


Aber ich bin noch nicht begeistert vom Ergebnis. Was hältst du davon?

Deine Lösung ist nicht schlecht, aber sie wirkt « komisch » im Rest der Bearbeitungsoberfläche.

Ich bringe meinen Senf dazu, ich mag es persönlich so :slight_smile: es ist nicht aufdringlich, es ist praktisch in der Handhabung, es macht den Job, finde ich

Die relationale Tabelle ist sicherlich eine gute Idee. Als ich das gelesen habe, dachte ich, dass es eine gute Idee wäre, die Geräte bearbeiten zu können!
Ich denke dabei insbesondere an MQTT-Geräte, die auch virtuell verwendet werden. Die Möglichkeit, virtuelle Geräte mit physischen Geräten über Tags zu verknüpfen, z. B. virtuelle Geräte zu gruppieren, wäre großartig!!

Ich bin auch nicht begeistert, es ist funktional, aber es sieht ein bisschen wie ein « großer Block » in der Mitte des Bildschirms aus, es passt nicht wirklich zum bestehenden Design.

Falls du keine Ideen hast, ich mache das normalerweise so: Ich schaue mir an, wie andere Produkte das machen: Öffne ein paar Produkte, die du verwendest und die ein ähnliches Tag-System haben, und schau dir an, wie sie das machen. Es bringt nichts, das Rad neu zu erfinden, wenn Designer großer Unternehmen bereits stundenlang an dem Thema gearbeitet haben :wink:

Zum Beispiel hat GitHub ihre « Issue »-Seite in zwei Teile aufgeteilt:

Mit der Bearbeitung rechts (Tags usw.)

Wenn man zu Zapier geht (die das Gleiche wie wir machen: Szenen), haben sie das gleiche Verhalten wie GitHub, eine Leiste rechts:

Wenn man auf « Settings » klickt, sieht es so aus:

Ich sage nicht, dass das die Lösung ist, aber meiner Meinung nach ist es einen Versuch wert! Es würde ermöglichen, deine « react-select »-Komponente in eine seitliche Leiste zu setzen, die « begrenzt » ist und nicht 100% der Breite einnimmt.

Ich habe viele Projekte für Szenen im Kopf: den Ausführungsverlauf der Szenen anzeigen, mit dem, was bei jeder Ausführung passiert ist, und das könnte in dieser Seitenleiste Platz finden :slight_smile:

Was denkst du darüber?

Eines nach dem anderen, bleiben wir hier fokussiert.

Super vielversprechend!

Heute Morgen dachte ich, dass man Filter in der Szenenansicht hinzufügen könnte.
Zum Beispiel: aktiv / deaktiviert / nach Auslösetyp (Auswahl der Geräte) / usw.