Zustände spielen eine entscheidende Rolle bei der Erstellung dynamischer und reaktionsfähiger Oberflächen in 4D Qodly Pro. Sie ermöglichen es Ihnen, die Anzeige und das Verhalten von Widgets auf der Grundlage bestimmter Bedingungen zu steuern, z. B. der Rolle eines Benutzers, seiner Berechtigungen oder der Daten aus Ihrer Datenbank.
Dieser Blog erläutert dieses Konzept, stellt die verschiedenen Arten von Zuständen vor und veranschaulicht ihre Verwendung anhand von Beispielen aus der Anwendung Performance Review, damit Sie verstehen, wie Sie sie effektiv einsetzen können.
Anwendung Leistungsüberprüfung
Was ist ein Status in Qodly Studio?
Ein Status stellt eine bestimmte Konfiguration einer Seite zu einem bestimmten Zeitpunkt dar und definiert ihr Aussehen und ihre Funktionen.
Ein Status kann zum Beispiel verwendet werden, um:
- Elemente ein- oder auszublenden, basierend auf definierten Bedingungen.
- bestimmte Stile anzuwenden.
- Dynamische Anpassung der Benutzeroberfläche in Abhängigkeit von Rollen, Berechtigungen oder Daten.
Eine vollständige Übersicht finden Sie in der offiziellen Dokumentation zu Zuständen.
Zustandstypen in Qodly Studio
Qodly Studio bietet zwei Arten von Zuständen:
Nicht-bedingter Zustand
Ein nicht-bedingter Zustand wird statisch angewandt, ohne sich auf eine dynamische Bedingung zu stützen. Er ermöglicht es Ihnen, ein Widget auf eine vordefinierte Weise zu aktivieren oder zu deaktivieren.
Beispiel: Ein Formular wird nur angezeigt, wenn der Benutzer auf eine Schaltfläche klickt, ohne zusätzliche Bedingungen zu prüfen.
Bedingter Zustand
Ein bedingter Zustand basiert auf einer benutzerdefinierten Logik. Er ändert die Anzeige oder den Stil von Widgets auf der Grundlage von Kriterien wie Benutzerrollen oder Datenbankwerten.
Beispiel: Ausblenden der Schaltfläche „Absenden“, wenn die Aufgabe bereits abgeschlossen ist, oder Aktivieren/Deaktivieren eines Feldes auf der Grundlage der Rolle des Benutzers.
Beispiele für Zustände
Zur besseren Veranschaulichung der Verwendung von Zuständen sind hier zwei konkrete Beispiele aus der Anwendung Leistungsüberprüfung aufgeführt.
Beispiel 1: Bearbeitung auf Basis des Status einschränken
In der Anwendung „Leistungsüberprüfung“ bestimmt der Status einer Überprüfung, ob ein Benutzer die Daten anzeigen oder bearbeiten kann.
- Mitwirkender: Die Daten sind schreibgeschützt, wenn der Status Erledigt oder Abgeschlossen lautet.
- Manager: Die Daten sind schreibgeschützt, wenn der Status Schließen lautet.
- HR: Voller Zugriff auf die Daten, unabhängig vom Status.
Den Status „schreibgeschützt“ erstellen
Um die Bearbeitung von Daten auf der Grundlage des Status einer Überprüfung einzuschränken, erstellen wir einen speziellen Status namens„readOnly„.

Wählen Sie nun den soeben erstellten Status„readOnly“ aus. Um sicherzustellen, dass der Status aktiv ist und derjenige ist, den Sie ändern möchten, überprüfen Sie, ob sein Name in der unteren rechten Ecke des Seitenbearbeitungsbereichs erscheint.

Konfigurieren Sie die Anzeige der Widgets
Ändern Sie für jedes Eingabe-Widget das Attribut „disabled“ auf true, um die Feldbearbeitung zu deaktivieren.

Benennen Sie dann die Schaltflächen Bearbeiten in Ansicht um.

Blenden Sie anschließend die Schaltflächen Erstellen und Speichern aus, indem Sie die Display-Eigenschaft auf none setzen.

Wenden Sie die gleichen Änderungen auch auf modale Dialoge an, die durch die Schaltfläche „View“ geöffnet werden:
- Deaktivieren Sie die Eingabefelder.
- Blenden Sie die Aktionsschaltflächen Speichern und Löschen aus.
- Benennen Sie Abbrechen in Schließen um.
Sollte eine Schaltfläche versehentlich ausgeblendet worden sein, verwenden Sie das Outline-Panel in Qodly Studio, um die Konfiguration zu finden und zu korrigieren.

Implementieren der Anzeigelogik
Der nächste Schritt besteht darin, die Logik zu implementieren, die den„ReadOnly„-Status auf der Grundlage des Überprüfungsstatus und der Rolle des Benutzers aktiviert oder deaktiviert.
Die Rolle des Benutzers wird in den Sitzungsdaten gespeichert. Ein Manager hat zum Beispiel eine Doppelrolle: Er agiert als Manager, wenn er die Überprüfungen seines Teams bearbeitet, aber als Mitarbeiter, wenn er seine eigenen Überprüfungen verwaltet. Wenn Sie in der Menüleiste der Anwendung Collaborator auswählen, wird das Rollenattribut im Speicher auf„Collaborator“ aktualisiert, während es bei Auswahl von Manager auf„Manager“ aktualisiert wird.
Wir fügen der Entität Review ein berechnetes Attribut hinzu:
exposed Function get isReadOnly() : Boolean
var $status : Boolean:=False
If (ds.getUserInfo()#Null)
If ((ds.getUserInfo().role="Collaborator") && (This.ID_Status>2))
$status:=True
End if
If ((ds.getUserInfo().role="Manager") && (This.ID_Status>3))
$status:=True
End if
End if
return $status
Diese Funktion gibt true zurück, wenn der Benutzer die Daten nur ansehen kann, und false, wenn er sie ändern darf.
Hinweis: Die Funktion getUserInfo() ermöglicht den Zugriff auf den Sitzungsspeicher.
Verknüpfen Sie die Bedingung mit dem „readOnly“-Status
Klicken Sie schließlich auf die Schaltfläche Bedingungen des„readOnly„-Status, um die Anzeigeregeln zu definieren.

Fügen Sie eine Bedingung hinzu.

Geben Sie einfach die Formel ein: „selectedReview.isReadOnly ist wahr“.

Mit dieser Konfiguration wechselt die Seite dynamisch zwischen dem schreibgeschützten und dem Bearbeitungsmodus, ohne dass manuelle Eingriffe oder komplexer Code erforderlich sind.
Beispiel 2: Steuerung der Sichtbarkeit von Schaltflächen basierend auf dem Datenstatus
In der Anwendung Leistungsüberprüfung wird eine Seitenleiste angezeigt, wenn eine Überprüfung ausgewählt wird. Die angezeigten Schaltflächen in dieser Seitenleiste hängen von mehreren Faktoren ab:
- Ob der Status schreibgeschützt oder schreibgeschützt ist.
- Ob ein PDF-Dokument verfügbar ist.
- Ob die Rolle des Benutzers Manager, Mitarbeiter oder HR ist.
- Ob die PDF-Datei angezeigt wird.
Um diese verschiedenen Fälle effizient zu behandeln, erstellen wir Zustände für alle möglichen Kombinationen.
Zur Information: Die Rolle wird zugewiesen, wenn sich der Benutzer anmeldet und die Seite HR, Manager oder Mitarbeiter auswählt. Diese Information wird im Sitzungsspeicher gespeichert. Dieses Konzept wird in einem der nächsten Blogeinträge, die sich mit der Navigation zwischen den verschiedenen Seiten der Anwendung befassen, näher erläutert werden.
Erstellen von Zuständen für jedes Szenario
Um eine reibungslose Benutzererfahrung zu gewährleisten, definieren wir bestimmte Zustände, die die Sichtbarkeit von Schaltflächen auf der Grundlage der oben genannten Bedingungen steuern. Jeder Zustand passt die Oberfläche dynamisch an, um nur die relevanten Aktionen anzuzeigen.
Beispiele:
readOnly

NurLesenPDF

readWriteManager

readWritePDFManager

Speichern von wiederverwendbaren Bedingungen
Um die Zustandsverwaltung zu vereinfachen und redundante Logik zu vermeiden, definieren wir wiederverwendbare benannte Bedingungen:
- Kollaborateur: userInfo.role ist „Kollaborateur“
- Manager: userInfo.role ist „Manager“
- HR: userInfo.role ist „HR“
- selected: selectedReview ist nicht Null und selectedReview.pdfDocument ist Null
- selectedWithPDF: selectedReview.pdfDocument ist nicht Null
- viewPDF: viewPdf ist wahr
- isReadOnly: selectedReview.isReadOnly ist True
- isReadWrite: selectedReview.isReadOnly ist False
Um Bedingungen zu speichern, klicken Sie auf die Schaltfläche „…“ und wählen Sie „Bedingung speichern“ aus dem Menü.

Anwenden von Bedingungen auf Zustände
Mit diesen vordefinierten Bedingungen wird die Konfiguration von Zuständen viel einfacher. Anstatt komplexe Bedingungen für jeden Zustand manuell festzulegen, verweisen wir einfach auf die gespeicherten Bedingungen. Dies gewährleistet Klarheit, Konsistenz und Wartungsfreundlichkeit.
Um beispielsweise die Sichtbarkeit des Zustands „readWritePDFManager“ zu definieren, legen wir die folgenden Bedingungen fest: selectedWithPDF, isReadWrite, und Manager

Es liegt an Ihnen, herauszufinden, wie die anderen Zustände konfiguriert sind, und wenn Sie Fragen haben, besuchen Sie das 4D Forum.
Auf diese Weise wird sichergestellt, dass sich die Benutzeroberfläche dynamisch an die verschiedenen Benutzerrollen und Überprüfungsstatus anpasst und eine intuitive und effiziente Benutzererfahrung bietet.
Fazit
Die Nutzung von Zuständen in 4D Qodly Pro ist ein leistungsfähiger Ansatz zur Anpassung der Benutzererfahrung und zur Optimierung von Schnittstellen. Wenn Sie sie effektiv nutzen, können Sie:
- Die Sichtbarkeit von Elementen auf Basis von Rollen und Berechtigungen anpassen.
- die Interaktivität und Relevanz der verfügbaren Aktionen verbessern.
- Robuste Anwendungen entwerfen, die auf die tatsächlichen Bedürfnisse der Benutzer zugeschnitten sind.
Weitere Informationen finden Sie in unserer vollständigen Dokumentation zu Zuständen.
Wie verwenden Sie Zustände in Ihren Qodly-Anwendungen? Teilen Sie Ihre Ideen oder Fragen im 4D Forum mit!
