Ereignisse

In SketShDb gibt es bestimmte Ereignisse, die mit einer oder mehreren Abläufen versehen werden können.

Die Ereignisse sind im Einzelnen:

Tutorial-Ausschnitt: Ereignisse und Aktionen (YouTube, externer Link)

Ereignis-Übersicht

In der Ereignisübersicht siehst du die für das jeweilige Projekt bestehenden Ereignis-Handler. Das Icon zeigt an, auf welchen Typ von Ereignis der jeweilige Handler reagiert. Durch Tippen auf die Einträge kann der entsprechende Handler bearbeitet werden.
Wie in allen anderen Übersichten kann mit Hilfe des "+" Buttons oben rechts ein neuer Handler hinzugefügt werden.
Eine Besonderheit in dieser Ansicht ist der "Protokoll"-Button links neben dem "+"-Button: Es wird das Ausführungsprotokoll für Ereignisse und Formeln angezeigt. Dies kann insbesondere bei Problemen bei der Ausführung von Formeln oder Ereignissen hilfreich sein. Auch die Ausführung von Formeln nach dem Speichern in Formularen und bei der Anzeige von Ansichten wird hier aufgelistet. Fehler bei der Ausführung werden in roter Schrift hervorgehoben, um die Suche zu vereinfachen. Ereignishandler müssen beim Speichern bzw. beim Start der App zunächst in eine ausführbare Anweisungsfolge "übersetzt" werden. Auch dieser Prozess ist im Protokoll aufgeführt ("Parsing..."), da auch hier z.B. durch fehlende Argumente Fehler auftreten können. (Fehlende Argumente verhindern nicht das Speichern von Ereignishandlern, da ansonsten kein "Zwischenstand" eines Handlers gespeichert werden könnte.)

Ereignis-Editor

Der Ereignis-Editor ermöglicht die Erstellung von Programmabläufen, die bei den jeweiligen Ereignissen ausgeführt werden. Im linken Teil des Editors kann der Programmcode eingegeben werden. Falls der Code Fehler enthält, werden diese unterhalb des des Texteditors angezeigt. Auf der rechten Seite befindet sich eine Auswahlliste von Programmelementen, die an der jeweiligen Stelle eingesetzt werden können.

Im Editor kann in der MacOS-Variante der App die Schriftgröße mit den Tastenkombinationen CMD+"+" bzw. CMD+"-" vergößert/verkleinert werden. Die Schriftgröße der Vorschlagliste auf der rechten Seite kann mit CMD+SHIFT+"+" oder CMD+SHIFT+"-" vergrößert/verkleinert werden. CMD+SHIFT+"0" setzt die Schriftgröße auf den Defaultwert zurück.

Der Ereignis-Editor kennt mehrere verschiedene Typen von Elementen:

Funktionen / Ereignisse / Aktionen

Durch Antippen/Anklicken eines Elements in der Vorschlagsliste rechts kann das jeweilige Element an der aktuellen Cursorposition in den Programmcode übernommen werden. Die Parameter werden mit Platzhaltern vorbelegt, zwischen denen mit CTRL+Pfeil nach link/rechts umgeschaltet werden kann. CTRL+SPACE ermöglicht die Auswahl eines Listeneintrags per Tastatur. Es wird anschließend mit Pfeil nach obe/unten ein Eintrag ausgewählt und mit ENTER ausgewählt.

Besonderheiten

Die Argumente werden in der Skriptsprache zumeist mit einem vorangestellten Argumentnamen verwendet. Die Skriptsprache kennt zwar nur wenige unterschiedliche Datentypen, ist aber strikt typisiert. Es muss also z.B. bei der Verwendung von Variablen auf den Typ geachtet werden, wobei vor einer Wertzuweisung keine Dekalration einer Variablen erfolgen muss. Der Typ wird durch die erste Zuweisung eines Wertes definiert.

Zu Beachten ist auch, dass die Skriptsprache keine Rechenregeln oder gemischte Ausdrücke mit verschiedenartigen Operatoren kennt. Ausdrücke mit Operatoren müssen deshalb immer geklammert werden.

Suchbedingungen müssen als String (Textwert) angegeben werden, es können auf der jeweils linken Seite eines Suchausdrucks auch Variablen aus dem Skriptcode verwendet werden, dem Variablennamen ist dann ein "$"-Zeichen voranzustellen.

Falls die Typzuordnung nicht eindeutig ist, kann es im Einzelfall notwendig sein, dass ein Wert noch einmal mit einer Identitätsfunktion des jeweiligen Typs umschlossen wird (z.B. strVal, numVal, boolVal, etc.), damit der Interpreter den richtigen Typ antizipieren kann.

Die Ereignisse im Einzelnen

attachmentAdded(type,alias?,name:var?,contentType:var?,size:var?,action,...), attachmentRemoved(type,alias?,name:var?,contentType:var?,size:var?,action,...), buttonPressed(type,command:str,document:alias?,formData:alias?,action,...), commented(type,alias?,rating:var?,comment:var?,action,...), created(type,alias?,action,...), deleted(type,old:alias?,action,...), disliked(type,alias?,action,...), fileImport(action,...), formPresenting(type:str,alias,onCreate:bool,onModify:bool,action,...), liked(type,alias?,action,...), location(type,property?,alias?,whenEntering:bool,whenLeaving:bool,action,...), manuallySorted(type:str,alias,action,...), modified(type,old:alias?,new:alias?,action,...), recordSelected(type,alias?,viewName,action,...), shortcut(name:str,action,...), shortcutInBackground(name:str,action,...)

attachmentAdded(type,alias?,name:var?,contentType:var?,size:var?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn auf dem Endgerät für einen Datenbankeintrag ein Dateianhang hinzugefügt wurde.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn für den jeweiligen Eintrag ein Dateianhang hinzugefügt wurde.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des geänderten Dokuments zugegriffen werden kann.
3"name"Variablen-Alias,optional Variablenname, unter dem auf den Namen des hinzugefügten Anhangs zugegriffen werden kann.
4"contentType"Variablen-Alias,optional Variablenname, unter dem auf den Inhaltstyp (Mime-Type) des hinzugefügten Anhangs zugegriffen werden kann.
5"size"Variablen-Alias,optional Variablenname, unter dem auf die Dateigröße des hinzugefügten Anhangs zugegriffen werden kann.
6"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

attachmentRemoved(type,alias?,name:var?,contentType:var?,size:var?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn auf dem Endgerät für einen Datenbankeintrag ein Dateianhang entfernt wurde.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn für den jeweiligen Eintrag ein Dateianhang entfernt wurde.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des geänderten Dokuments zugegriffen werden kann.
3"name"Variablen-Alias,optional Variablenname, unter dem auf den Namen des hinzugefügten Anhangs zugegriffen werden kann.
4"contentType"Variablen-Alias,optional Variablenname, unter dem auf den Inhaltstyp (Mime-Type) des hinzugefügten Anhangs zugegriffen werden kann.
5"size"Variablen-Alias,optional Variablenname, unter dem auf die Dateigröße des hinzugefügten Anhangs zugegriffen werden kann.
6"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

buttonPressed(type,command:str,document:alias?,formData:alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn im Eingabeformular des angegebenen Typs ein Button mit dem angegebenen Befehl betätigt wird.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn ein entsprechender Button betätigt wird.
2"command"Text Befehl, ein frei wählbarer Text, der identisch in der Konfiguration des Buttons angegeben werden muss und den Button zum Ereignis zuordnet.
3"document"Dokumenten-Alias,optional Dokumenten-Alias, unter dem auf die Werte des Dokuments zugegriffen werden kann, in dessen Formular der Button betätigt wurde. (Im aktuell in der Datenbank gespeicherten Zustand)
4"formData"Dokumenten-Alias,optional Dokumenten-Alias, unter dem auf die Werte des Formulars zugegriffen werden kann, in dem der Button betätigt wurde. Die im Formular angezeigten Werte können über diesen Dokumenten-Alias per setProperty(...) geändert/gesetzt werden.
5"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

commented(type,alias?,rating:var?,comment:var?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn auf dem Endgerät für einen Datenbankeintrag ein Kommentar/eine Sternebewertung eingetragen wurde.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn für den jeweiligen Eintrag ein Kommentar/eine Sternebewertung eingetragen wurde.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des kommentierten/bewerteten Dokuments zugegriffen werden kann.
3"rating"Variablen-Alias,optional Variablenname, unter dem auf die Bewertung (0-5, falls mit dem Kommentar eine Bewertung vergeben wurde) zugegriffen werden kann.
4"comment"Variablen-Alias,optional Variablenname, unter dem auf den Kommentartext zugegriffen werden kann.
5"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

created(type,alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, nachdem auf dem Endgerät ein neuer Datenbankeintrag des angegebenen Typs erzeugt wurde.

1"type"Typ Das Ereignis wird für neue Einträge dieses Typs ausgelöst.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des neu angelegten Dokuments zugegriffen werden kann.
3"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

deleted(type,old:alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, nachdem auf dem Endgerät ein Datenbankeintrag des angegebenen Typs gelöscht wurde.

1"type"Typ Das Ereignis wird für Änderungen an Einträgen dieses Typs ausgelöst.
2"old"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des geänderten Dokuments zugegriffen werden kann, die das Dokument vor dem Löschen hatte.
3"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

disliked(type,alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn auf dem Endgerät für einen Datenbankeintrag ein "Dislike" vergeben wurde.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn für den jeweiligen Eintrag ein Dislike vergeben wurde.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des bewerteten Dokuments zugegriffen werden kann.
3"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

fileImport(action,...)

Verwendbar in: Ereignisse

Anmerkungen:

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn aus einer anderen App eine beliebige Datei in SketShDb geöffnet wird. Dieses Ereignis ist nicht projektspezifisch, d.h. es wird beim Eintreffen jeder beliebigen Datei für alle Projekte ausgeführt.

1"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

formPresenting(type:str,alias,onCreate:bool,onModify:bool,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, bevor für den angegebenen Typ das Formular angezeigt wird. Mittels dieses Ereignistyps können spezielle Formularwerte vorbelegt werden.

1"type"Typ Das Ereignis wird für das Formular zur Bearbeitung dieses Typs ausgelöst.
2"alias"Dokumenten-Alias Dokumenten-Alias unter dem auf die vorbelegten Standardwerte zugegriffen werden kann und über den veränderte Werte gesetzt werden können.
3"onCreate"Schalter Wenn dieser Wert auf an/wahr gesetzt wird, dann wird das Ereignis beim Öffnen eines leeren Formulars für ein neues Dokument ausgelöst.
4"onModify"Schalter Wenn dieser Wert auf an/wahr gesetzt wird, dann wird das Ereignis beim Öffnen eines Formulars für ein bereits bestehendes Dokument ausgelöst.
5"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

liked(type,alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn auf dem Endgerät für einen Datenbankeintrag ein "Like" vergeben wurde.

1"type"Typ Das Ereignis wird für Einträge dieses Typs ausgelöst, wenn für den jeweiligen Eintrag ein Like vergeben wurde.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des bewerteten Dokuments zugegriffen werden kann.
3"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

location(type,property?,alias?,whenEntering:bool,whenLeaving:bool,action,...)

Verwendbar in: Ereignisse

Anmerkungen:

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn der Nutzer eine Region betritt oder verlässt, für die eine Ortsbenachrichtigung aktiviert wurde. Für Orte des Typs, zu denen keine Ortsbenachrichtigung gesetzt wurde, wird dieses Ereignis nicht ausgelöst. Die Ortsbenachrichtigung kann für ein Ortsfeld aktiviert werden, indem man die Kartenansicht des Ortsfeldes aufklappt und das "Glocke"-Symbol antippt.
Besonderheit: Das Ereignis deklariert implizit zwei Bool-Variablen "didEnter" und "didLeave", die angeben, ob das Ereignis aufgrund des Erreichens oder Verlassens einer Region ausgelöst wurde.

1"type"Typ Das Ereignis wird für aktivierte Ortsbenachrichtigungen zu diesem Typ ausgelöst.
2"property"Feld,optional Falls dieser Wert gesetzt ist, dann wird das Ereignis nur für Ortsbenachrichtigungen zum angegebenen Ortsfeld innerhalb des Typs ausgelöst. Falls dieser Parameter nicht gesetzt ist, dann wird das Ereignis für alle Ortsfelder des Typs ausgelöst.
3"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des Dokuments zugegriffen werden kann, das den Ort enthält.
4"whenEntering"Schalter Wenn dieses Feld auf an/wahr gesetzt wird, dann wird das Ereignis ausgelöst, wenn die Region betreten wird. (Dazu muss die Ortsbenachrichtigung auch entweder mit "Beim Betreten" oder "Beides" aktiviert worden sein.)
5"whenLeaving"Schalter Wenn dieses Feld auf an/wahr gesetzt wird, dann wird das Ereignis ausgelöst, wenn die Region verlassen wird. (Dazu muss die Ortsbenachrichtigung auch entweder mit "Beim Verlassen" oder "Beides" aktiviert worden sein.)
6"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

manuallySorted(type:str,alias,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn in einer Liste ein manueller Sortiervorgang ausgeführt wurde. (Nur wenn die Listenansicht als manuell zu sortieren konfiguriert ist)

1"type"Typ Das Ereignis wird beim manuellen Sortieren einer Listenansicht für diesen Typ ausgelöst.
2"alias"Dokumenten-Alias Dokumenten-Alias unter dem auf das umsortierte Dokument zugegriffen werden kann.
3"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

modified(type,old:alias?,new:alias?,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, nachdem auf dem Endgerät ein Datenbankeintrag des angegebenen Typs verändert wurde.

1"type"Typ Das Ereignis wird für Änderungen an Einträgen dieses Typs ausgelöst.
2"old"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die Werte des Dokuments zugegriffen werden kann, die vor der Änderung gesetzt waren.
3"new"Dokumenten-Alias,optional Dokumenten-Alias unter dem auf die aktuellen Werte des Dokuments nach der Änderung zugegriffen werden kann.
4"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

recordSelected(type,alias?,viewName,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis wird ausgelöst, wenn in einer Listen- oder Kartenansicht ein Eintrag ausgewählt wurde, so dass normalerweise (ohne einen entsprechenden Eventhandler) sein Formular geöffnet würde. Im Gegensatz zum formPresenting-Event wird diesen Event bereits beim Selektieren des Datensatzes ausgelöst. Das Formular wird nicht angezeigt, wenn ein entsprechenden Handler vorhanden ist.

1"type"Typ Das Ereignis wird für Elemente dieses Typs ausgelöst. Dieser Typ muss mit dem in der angegebenen Ansicht verwendeten Typ übereinstimmen.
2"alias"Dokumenten-Alias,optional Dokumenten-Alias unter dem im Event-Handler auf den ausgewählten Eintrag zugegriffen werden kann.
3"viewName"Text Name der Ansicht, in der bei Auswählen eines Eintrags das Event ausgelöst werden soll
4"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

shortcut(name:str,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Dieses Ereignis ist nicht dokumentenbezogen und kann auf verschiedene Arten ausgelöst werden: Entweder direkt aus der Ereignisliste des Projektadministrators, als Projekt-Button aus der Projektliste, aus Siri per Kurzbefehl, aus der Kurzbefehle-App oder über das SketShDb URL-Scheme. Shortcut-Events können ebenfalls aus anderen Events direkt ausgeführt werden.

1"name"Text Name, unter dem das Ereignis aufgerufen werden kann.
2"actions"Aktion,1-*,optional Aktionen, die ausgeführt werden, wenn das Ereignis ausgelöst wurde.

shortcutInBackground(name:str,action,...)

Verwendbar in: Ereignisse

Rückgabewert(Ereignis)

Argumente

1"name"Text
2"actions"Aktion,1-*,optional