Dokumentation¶
Um mit decore Base eine lauffähige GUI-Dashboard-Anwendung zu erstellen, sind vergleichsweise wenige Schritte notwendig. Im Wesentlichen besteht der Aufbau aus der Definition der Meta-Instanzen und der Definition des Datenmodells. Die Metadaten werden vom Interpreter durch Einlesen von dekorierten Funktionen zusammengestellt und als Instanzen im Pool gespeichert.
Beschreibung der Meta-Instanzen¶
Meta-Instanzen entahlten die benötigten Typen und Attribute für die Erstellung der GUI-Elemente. Die Meta-Instanzen werden in der Regel durch dekorierte Funktionen erstellt.
App¶
Die Application-Instanz liefert die Metadaten für den Anwendung. Sie ist die Wurzel für alles kommende und nimmt nur Basen auf. Die App-Instanz wird durch den „Decorator“ app()
erstellt.
Base¶
Die Base-Instanz liefert die Metadaten für die Basis. Sie ist das Trägerelement für die Ansichten. Die Base-Instanz wird durch den „Decorator“ base()
erstellt.
- Darstellung im Frontend
Die Basis ist im Grunde die freie Fläche die für die Ansichten zur Verfügung steht.
In der Navigation wird sie direkt unter Wurzel gelistet sobald sie mehr als eine Ansicht erhält.
View¶
Die View-Instanz liefert die Metadaten für die Ansicht. Ihr können Aktionen und Dialoge untergeordnet werden. Die View-Instanz wird durch den „Decorator“ view()
erstellt.
- Darstellung im Frontend
Die Ansicht wird in der Navigation unter der Basis gelistet.
Die Ansicht wird im Ansichtsbereich der Basis gerendert.
Dialog¶
Die Dialog-Instanz liefert die Metadaten für den Dialog. Ihr können weitere Dialoge untergeordnet werden die dann in Tabs dargetellt werden. Hauptsächlich dienen diese aber zum tragen der Widgets. Die Dialog-Instanz wird durch den „Decorator“ dialog()
erstellt.
- Darstellung im Frontend
Der Dialog kann in unterschiedlichen Display-Modis dargestellt werden. Zum Beispiel als Side-Drawer oder als modales Fenster.
Dieser wird durch die mit dem Aktivator-Attribut bestimmten Postionen oder Ereignisse aufgerufen.
Widget¶
Die Widget-Instanz liefert die Metadaten für das Widget. Ihr können weitere Widgets untergeordnet werden die dann gestapelt dargetellt werden. Ein Widget wird für die Manipulation des Datensatzes oder Datensätze benötigt. Die Widget-Instanz wird durch den „Decorator“ widget()
erstellt.
- Darstellung im Frontend
Das Widget wird im Content-Bereich des Dialoges dargestellt.
Action¶
Die Action-Instanz liefert die Metadaten für die Aktion. Sie ist das Schlußlicht in der Prozesskette der Meta-Abarbeitung und dient zum übermitteln der Manipulationen und der Ausführung von Aktionen im Backend. Die Action-Instanz wird durch den „Decorator“ action()
erstellt.
- Darstellung im Frontend
Aktionen können durch das Aktivator-Attribut an unterschiedlichen Stellen im Frontend positioniert werden, haben aber keine tatächliche Darstellung sondern nur Schaltflächen- oder Ereignisgesteuerte Trigger.
Function¶
Die Function-Instanz liefert die Metadaten für Funktionen die nach dem Init des Pools direkt in der Base als Instanz-Methoden ausgeführt werden. Die Function-Instanz wird durch den „Decorator“ function()
erstellt.
- Darstellung im Frontend
Funktionen werden nicht im Frontend dargestellt oder aufgearbeitet.
Abarbeitungsreihenfolge im Frontend¶
Nach dem Öffnen einer Anwendung, dem Anlegen der Base und dem Anlegen weiterer Childs laufen alle Pfade auf die Action zu, die schließlich wieder mit dem Backend kommuniziert, um die Manipulation der Daten zu ermöglichen. Nicht jedes Komponentenobjekt kann einem anderen beliebig zugeordnet werden. Das Frontend arbeitet die einzelnen Objekte nur in einer festen Reihenfolge ab.
Diese Übersicht stellt den Prozess dieser Abarbeitung dar.
Relationale Datenverarbeitung im Widget¶
Die Datenverarbeitung und Datensatzgenerierung in den Widgets ist ein wichtiger Bestandteil der Anwendung und wird hier als Relationale-Datenverarbeitung bezeichnet. Diese Generierung des bearbeitbaren Datensatzes, wird erstens durch den Aktivator und zweitens durch die Datenquelle der Ansicht in Beziehung zur Datenquelle des Widgets gesteuert. Damit wird ermöglicht, einen Dialog mit weiter im Kontext der eigentlichen Selektion zu erweitern und detailreicher zu gestalten.
Folgender Chart beschreibt diesen Prozess.
- Legende:
- Item
empty = ein leerer Datensatz wird generiert. (keine Default-Werte).
first = der erste Datensatz der Widget-Quelle wird als Datensatz geladen.
last = der letzte Datensatz der Widget-Quelle wird als Datensatz geladen.
default = ein neuer Datensatz mit Default-Werten der Widget-Quelle wird als Datensatz geladen.
item_by_id = ein Datensatz mit einer definierten ID aus der Widget-Quelle wird als Datensatz geladen.
- Query
True = Alle vorkommenden Backref-Namen und die ID des selektierten Datensatzes der Ansichts-Quelle wird genutzt, um die Query des Widgets zu erweitern.
False = Die ID des selektierten Datensatzes wird nicht als Query-Attribut für den Datenabruf verwendet.
- Extend
True = automatische Befüllung der relationalen Felder des Ziel-Datensatzes, mit dem Ansichts-Datensatz. Zum Beispiel: Ein ForeignKey-Feld des Ziel-Datanstaz wird mit dem Ansichst-Datenstaz befüllt.
False = keine automatische Befüllung des Datensatzes.