Dekoratoren¶
- class Decore¶
Objekt der Klasse Decore ist die Hauptklasse des Frameworks. Sie ist für die Registrierung der Elemente zuständig und stellt die API zur Verfügung.
-
app(title, desc=
None
, allow_guest=True
)¶ Eine Funktion zum eröffnen einer GUI-Dashboard-Anwendung. Sie wird als „Decorator“ verwendet.
- Parameter:¶
@decore.app(title='My App', allow_guest=False) def main(): pass
- base(icon=None, title=None, desc=None, role=0, model=<Model: Decore_model>, private=False, stretch=False, navigation: ~typing.Literal['hide', 'main-top', 'main-bottom'] = 'main-top')¶
Eine Funktion zum registrieren einer Basis in der GUI-Dashboard-Anwendung. Sie wird als „Decorator“ verwendet.
Die Basis ist das Trägerelement für die Ansicht und die Vorlage für die Datenquelle im Frontend.
- Parameter:¶
- icon : str
Das Symbol der Basis.
- title : str
Der Titel der Basis.
- desc : str
Die Beschreibung der Basis.
- model : Model
Das Datenmodell der Basis.
@decore.base(icon='mdi-account', title='Person', desc='A basis for managing personal data', model=Person) class Person_base: pass
-
view(parent_id=
None
, icon=None
, title=None
, desc=None
, role=0
, type: 'blank' | 'table' ='table'
, fields=[]
, filters=[]
, query={}
, pag_type: 'client' ='client'
, pag_recs=16
)¶ Eine Funktion zur Registrierung einer Ansicht. Sie wird als „Decorator“ verwendet.
Eine Ansicht ist ein Container für die Anzeige von Daten.
- Parameter:¶
- parent_id : str¶
Die ID des übergeordneten Elements. Nur zu setzen, wenn die Ansicht in einer anderen Basis gerendert werden soll.
- icon : str¶
Das Symbol der Ansicht.
- title : str¶
Der Titel der Ansicht.
- desc : str¶
Die Beschreibung der Ansicht.
- type : Literal['table']¶
Gibt an wie die Datensätze angezeigt werden. Der Wert
table
stellt die Datensätze in einer Tabelle dar.- fields : list¶
Die Felder, die in der Ansicht angezeigt werden.
- filters : list¶
Die Filter, die in der Ansicht angezeigt werden.
- query : dict¶
Die Abfrage, die in der Ansicht angezeigt wird.
- pag_type : Literal['client']¶
Wählt die Methode wie die Datensätze der View geladen werden. Der Wert
client
lädt alle Datensätze auf einmal und überlässt den Seitenaufbau dem Frontend.- pag_recs : int¶
Gibt an wieviele Datensätze auf einer Seite der Ansicht angezeigt werden sollen.
16
ist die Standardeinstellung.
@decore.view(icon='mdi-account', title='Person', desc='A view for managing personal data', type='table', fields=[Person.id, Person.name, Person.age], filters=[Person.name, Person.age], query={'name__eq': 'Kemo'}, pag_type='client', pag_recs=16) def person_view(): pass
-
dialog(parent_id=
None
, icon=None
, title=None
, desc=None
, role=0
, type: 'standard' ='standard'
, display: 'modal' | 'draw-half' | 'draw-full' ='draw-half'
, activator: 'empty' | 'first' | 'last' | 'default' | 'context' | 'click' ='none'
)¶ Eine Funktion zur Registrierung eines Dialogs. Sie wird als „Decorator“ verwendet.
Der Dialog ist das Trägerelement für Widgets
- Parameter:¶
- parent_id : str¶
Die ID des übergeordneten Elements. Nur zu setzen, wenn der Dialog in einer Ansicht einer anderen Basis gerendert werden soll.
- icon : str¶
Das Symbol des Dialogs.
- title : str¶
Der Titel des Dialogs.
- desc : str¶
Die Beschreibung des Dialogs.
- type : Literal['standard']¶
Gibt an wie der Dialog die Widgets darstellen wird. Der Wert
standard
stellt die untergeordneten Widgets und Sub-Widgets untereinander dar.- display : Literal['modal', 'draw-half', 'draw-full']¶
Der Anzeigetyp des Dialogs. Standardwert ist
draw-half
.- activator : Literal['none', 'default', 'context', 'click']¶
Der Aktivatortyp des Dialogs. Über den Wert
none
wird der Dialog sofort beim OnLoad Ereignis der View angezeigt. Der Wertdefault
stellt den Dialog im Top-Menu der View dar. Der Wertcontext
stellt den Dialog im Kontextmenü eines Items der View dar. Der Wertclick
zeigt den Dialog dann an wenn man einen Datensatz anklickt.
@decore.dialog(icon='mdi-account', title='Person', desc='A dialog for managing personal data', type='standard', display='drawer', activator='default-menu') def person_dialog(): pass
-
widget(parent_id=
None
, icon=None
, title=None
, desc=None
, role=0
, type: 'default' | 'info' | 'form' | 'table' ='default'
, layout='cera'
, fields=[]
)¶ Eine Funktion zur Registrierung eines Widgets. Sie wird als „Decorator“ verwendet.
Ein Widget dient zur Darstellung und Interaktion mit dem Datensatz. Es erhält die Daten, die der Dialog-Aktivator vorgibt. Der Wert
none
übergibt den letzten Datensatz der Datenbanktabelle. Der Wertdefault
übergibt einen nur mit Default-Werten gefüllten Datensatz. Beim Wertcontext
übergibt es den Datensatz, der im Kontextmenü der Ansicht ausgewählt wurde. Undclick
übergibt den Datensatz, der angeklickt wurde.Widgets, welche aus einer fremden Basis einem Dialog zugeordnet werden, ergänzen die relationalen Felder eines Default-Items der fremden Datenquelle mit den Daten des aktivierten Items. (Der Satz ist Scheiße zu verstehen, aber er trifft genau das, was es tut). In der Sample Anwendung verwende ich das beim Zuweisen von „Contracts“ zu einer „Person“.
Es gibt aber auch Widgets, die mehrere Datensätze darstellen können, wie im Beispiel davor werden hier auch die Relationen verwendet, um nur Daten abzubilden, die etwas mit dem gewählten Item zu tun haben.
- Parameter:¶
- parent_id : str¶
Die ID des übergeordneten Elements. Nur zu setzen, wenn das Widget in einem Dialog einer anderen Basis gerendert werden soll.
- icon : str¶
Das Symbol des Widgets.
- title : str¶
Der Titel des Widgets.
- desc : str¶
Die Beschreibung des Widgets.
- type : Literal['default', 'info', 'form', 'table']¶
Gibt an wie das Widget die Daten darstellen wird. Standardwert ist
default
.- fields : list¶
Die Felder, die in dem Widget angezeigt werden.
@decore.widget(icon='mdi-account', title='Person', desc='A widget for managing personal data', type='form', layout='cera', fields=[Person.name, Person.age]) def person_widget(): pass
-
action(parent_id=
None
, icon=None
, title=None
, desc=None
, role=0
, type: 'standard' | 'submit' ='standard'
, activator: 'default' | 'context' | 'click' ='none'
, errors=True
)¶ Eine Funktion zur Registrierung einer Aktion. Sie wird als „Decorator“ verwendet.
Eine Aktion ist die tatsächliche Interaktion zwischen dem Benutzer und dem Backend.
- Parameter:¶
- parent_id : str¶
Die ID des übergeordneten Elements. Nur zu setzen, wenn die Aktion in einem Widget einer anderen Basis gerendert werden soll.
- icon : str¶
Das Symbol der Aktion.
- title : str¶
Der Titel der Aktion.
- desc : str¶
Die Beschreibung der Aktion.
- type : Literal['standard', 'submit']¶
Gibt an was die Aktion kann. Standardwert ist
standard
.- activator : Literal['default', 'context', 'click']¶
Gib an, wie die Aktion ausgelöst wird.
- errors : bool¶
Gibt an, ob die Aktion Validierungsfehler zurückgeben kann. Standardwert ist
True
. (Im Augenblick wirkt sich das nur auf den Typensubmit
aus.)
@decore.action(icon='mdi-account', title='Person', desc='A action for managing personal data', type='submit') def sample_action(item, **kwargs): pass
Die Aktionen durchlaufen ein Modul, welches die erhaltenen Daten aufbereitet und als Keyword-Parameter an die dekorierte Funktion übergibt. Es ist alles in den
kwargs
zu finden und man macht sich diese einfach verfügbar. Der Parameteritem
ist ein Beispiel dafür und repräsentiert den vom Frontend zurückgegebenen Datensatz. Um herauszufinden, was alles noch in denkwargs
steckt, bitte den Debugger benutzen.
-
function(type: 'shot' | 'work' =
'shot'
)¶ Eine Funktion zur Registrierung einer Funktion in der übergeordneten Base. Sie wird als „Decorator“ verwendet.
Eine Funktion wird direkt nach der Zusammenstellung des Metadaten-Pool ausgeführt. Mit Funktionen kann man die Logik erweitern, Dinge vorbereiten oder Hintergrundaufgaben erledigen. Sie agieren als Instanzmethoden der Basis und erhalten damit den objektorientierten Ansatz.
- Parameter:¶
- type : Literal['shot', 'work']¶
Gibt an wie eine Funktion ausgeführt wird. Mit dem Wert
shot
wird sie nur einmal ausgeführt. Der Wertwork
wird in einem Thread ausgeführt und kann somit Schleifen abarbeiten die niemals enden bis der Main-Thread endet.
@decore.function(type='shot') def sample_function(self): pass
-
app(title, desc=