corrections

This commit is contained in:
Robin Grenzdörfer 2023-06-07 08:58:23 +00:00
parent a15071099d
commit 3f0d2f7934
13 changed files with 54 additions and 29 deletions

View File

@ -36,7 +36,7 @@ Der Javascript-Code in diesem Attribut kann folgende Rückgabe-Werte haben:
| `false` | Der Wert des Feldes ist ungültig |
| `"Text"` | Wird ein String zurückgegeben ist, wird der Wert es Feldes ebenso als ungültig erachtet und der String selbst ist eine benutzerdefinierte Fehlermeldung, die in der Serverantwort gelesen werden kann. |
Da der `eval` Code serverseitig immer ausgeführt wird und ein Fehlschlag zwangsläufig zum Abbruch der Serveraktion führt, ist es wichtig, dass der [serverseitige Javascript-Kontext](./../../server-javascript-kontext/validator.md) berücksichtigt wird.
Da der `eval` Code serverseitig immer ausgeführt wird und ein Fehlschlag zwangsläufig zum Abbruch der Serveraktion führt, ist es wichtig, dass der Validator berücksichtigt wird.
Optional kann der Code auch zusätzlich über eine Lauffähigkeit ohne Fehler (z.B. keine Verwendung nicht vorhandender Kontext-Variablen oder Verwendung von `try ... catch`) im _tibi-admin_ verfügen. Das hat den Vorteil, dass eine Vorab-Validierung stattfindet, bevor der Datensatz an der Server gesendet wird.
@ -45,7 +45,7 @@ Sollte der `eval` Code im _tibi-admin_ nicht lauffähig sein (nicht abgefangene
#### siehe
- [Server Javascript Kontext](./../../server-javascript-kontext/allgemeines.md)
- [Validator Javascript Kontext](./../../server-javascript-kontext/validator.md)
TODO: Validator
## dependsOn

View File

@ -21,7 +21,7 @@ Diese verschiedenen Bezeichnungen repräsentieren dasselbe Widget. Dieses Widget
## Auswahl-Widgets für mehrere Optionen: select / selectArray
Diese beiden Widgets sind im Prinzip das Gleiche, nur mit unterschiedlichen Namen. Intern wird die Unterscheidung zwischen Mehrfachauswahl (<select multiple>) und einfacher Auswahl (<select>) anhand des Datentyps getroffen. Bei Datentypen mit einem "[]" am Ende wird die Mehrfachauswahl verwendet. Der Einsatz von selectArray ist für String-Arrays vorgesehen, select für einzelne Strings. Aktuell sind nur Strings möglich, da das <option>-Element alle Werte zu Strings konvertiert. Anpassungen sind jedoch bei Bedarf möglich. Es ist wichtig zu beachten, dass das name-Attribut den visuell dargestellten Wert darstellt, während die id den gespeicherten Wert repräsentiert. Wenn choices als Objekt angegeben wird, wird eine Anfrage an den spezifizierten Endpunkt mit den angegebenen Parametern gesendet und das gemappte name-Attribut davon angezeigt. Die id der ausgewählten Elemente wird intern als String gespeichert. Weiterhin ist die Angabe von chipStyle: (style) möglich. Dieser wird als Stil in das Element gerendert und ermöglicht zum Beispiel die visuelle Darstellung von Flaggen.
Diese beiden Widgets sind im Prinzip das Gleiche, nur mit unterschiedlichen Namen. Intern wird die Unterscheidung zwischen Mehrfachauswahl (<select multiple></select>) und einfacher Auswahl (<select></select>) anhand des Datentyps getroffen. Bei Datentypen mit einem "[]" am Ende wird die Mehrfachauswahl verwendet. Der Einsatz von selectArray ist für String-Arrays vorgesehen, select für einzelne Strings. Aktuell sind nur Strings möglich, da das <option></option>-Element alle Werte zu Strings konvertiert. Anpassungen sind jedoch bei Bedarf möglich. Es ist wichtig zu beachten, dass das name-Attribut den visuell dargestellten Wert darstellt, während die id den gespeicherten Wert repräsentiert. Wenn choices als Objekt angegeben wird, wird eine Anfrage an den spezifizierten Endpunkt mit den angegebenen Parametern gesendet und das gemappte name-Attribut davon angezeigt. Die id der ausgewählten Elemente wird intern als String gespeichert. Weiterhin ist die Angabe von chipStyle: (style) möglich. Dieser wird als Stil in das Element gerendert und ermöglicht zum Beispiel die visuelle Darstellung von Flaggen.
!!!include(../api/collections/fields/isEmployed.yml)!!!
## Bezug zu anderen Datenbankeinträgen: foreignKey
@ -31,7 +31,7 @@ Dieses Widget wird verwendet, um eine Referenz zu einem anderen Datenbankeintrag
## Datums-Widgets: date / dateTime
Diese beiden Widgets können für den Typ "date" verwendet werden. date erzeugt ein <input type="date"> Widget (nur das Datum), während dateTime ein <input type="datetime-local"> Widget erzeugt (Datum und Uhrzeit).
Diese beiden Widgets können für den Typ "date" verwendet werden. date erzeugt ein <input type="date" /> Widget (nur das Datum), während dateTime ein <input type="datetime-local" /> Widget erzeugt (Datum und Uhrzeit).
!!!include(../api/collections/fields/date.yml)!!!
## Textbearbeitungs-Widgets: richtext / html
@ -41,7 +41,7 @@ Diese beiden Bezeichnungen stehen für dasselbe Widget. Es handelt sich um ein T
## Datei-Upload-Widgets: file / image / mediaLibraryFile
Diese verschiedenen Bezeichnungen stehen alle für das gleiche Widget, nämlich <input type=file>. Es wird für den Datentyp File verwendet.
Diese verschiedenen Bezeichnungen stehen alle für das gleiche Widget, nämlich <input type=file />. Es wird für den Datentyp File verwendet.
!!!include(../api/collections/fields/profilePic.yml)!!!
## Mehrfachauswahl-Widgets: checkboxArray

View File

@ -16,7 +16,7 @@ Jeder dieser Schritte wird an einem spezifischen Punkt während der Verarbeitung
## Hook Implementierung
Jeder Hook ist in einer separaten JavaScript-Datei implementiert, die im hooks-Ordner Ihres Projekts gespeichert ist. Der Pfad zu dieser Datei wird in der config.yml angegeben.
Jeder Hook ist in einer separaten JavaScript-Datei implementiert, die im hooks-Ordner Ihres Projekts gespeichert ist. Der Pfad zu dieser Datei wird in der jeweiligen collection yml Datei angegeben.
Ein Hook ist eine Funktion, die eine context-Variable zur Verfügung hat, welche Informationen und Methoden für die aktuelle Anfrage bereitstellt. Der Rückgabewert dieser Funktion wird verwendet, um die Verarbeitung der Anfrage oder Antwort zu beeinflussen.
@ -41,7 +41,7 @@ Eine HookException kann folgende Eigenschaften haben:
HTTP-Statuscode des Fehlers.
- `html`:
HTML-Nachricht des Fehlers.
- `string`:
- `message`:
Textnachricht des Fehlers.
- `bytes`:
Binäre Daten des Fehlers.

View File

@ -1,6 +1,6 @@
# indexes Liste
Die indexes-Anweisung in der Konfigurationsdatei einer Sammlung (collection.yml) ist ein Array von Indexdefinitionen. Indizes werden in Datenbanken verwendet, um die Suchleistung zu optimieren. Indem Sie die richtigen Indizes definieren, können Sie die Effizienz Ihrer Anwendung verbessern.
Die indexes-Anweisung in der Konfigurationsdatei einer Sammlung (collection.yml) ist ein Array von Indexdefinitionen. Indizes werden in Datenbanken verwendet, um die Suchleistung zu optimieren. Indem Sie die richtigen Indizes definieren, können Sie die Effizienz Ihrer Anwendung verbessern. Es ist NICHT MÖGLICH einen gesetzten Index über die yml Datei wieder zu entfernen, hierfür muss man direkt in die Datenbank gehen.
Jede Indexdefinition ist ein Objekt mit bestimmten Eigenschaften:
@ -15,7 +15,7 @@ Jede Indexdefinition ist ein Objekt mit bestimmten Eigenschaften:
Eine andere mögliche Indexdefinition könnte so aussehen: key: ["file.type"]. Dies würde einen Index auf dem Feld type innerhalb des Unterobjekts file erstellen.
- `unique`:
Wenn auf true gesetzt, erzwingt dies, dass der Index eindeutige Werte enthält. Wenn Sie versuchen, einen Eintrag mit einem bereits indizierten Wert hinzuzufügen, wird ein Fehler ausgelöst.
Wenn auf true gesetzt, erzwingt dies, dass der Index eindeutige Werte enthält. Wenn Sie versuchen, einen Eintrag mit einem bereits indizierten Wert hinzuzufügen, wird ein Fehler ausgelöst und der Vorgang abgebrochen.
- `background`:
Wenn auf true gesetzt, erstellt die Datenbank den Index im Hintergrund, um die Leistungsauswirkungen auf andere Operationen zu minimieren.

View File

@ -26,6 +26,12 @@ Folgende möglche Einträge für `views` gibt es derzeit:
!!!include(../api/collections/medialib.yml)!!!
### dashboardSimpleList
- TODO
### dashboardTable
- TODO
## tablist1
Wird die `tablist` verwendet, ist sicher zu stellen, dass alle Felder in der Definition aufgenommen werden. Werden Felder nicht in die `tablist` aufgenommen, sind diese weiterhin in einer Gesamtliste unterhalb der Tabs und bringen das Layout durcheinander.

View File

@ -8,7 +8,24 @@ Die bereitgestellte Konfiguration ist eine Spezifikation für ein Dashboard-Layo
## type
Der Typ des Dashboard-Elements ist ein entscheidendes Attribut. Wenn der Typ "graph" ist, wird das Element als Diagramm dargestellt. Dies ermöglicht eine Vielzahl von Visualisierungen wie Linien-, Balken-, Kuchen-, Donut- oder Flächendiagramme, abhängig vom graphType. Der Typ "swiper" erstellt ein Karussell-ähnliches Element, das eine Reihe von anderen Elementen enthält, die durchgeblättert werden können. Jedes Element innerhalb des "swiper"-Typs wird genauso konfiguriert wie ein normales Dashboard-Element, was bedeutet, dass sie jeweils ihren eigenen type, title, etc. haben können. Die "reference"-Typ Elemente sind Verweise auf Collections. Außerdem gibt es den type "comparison", wobei man ein timespan auswählt und dieser timespan und der timespan davor mit einander auf einen bestimmten Wert verglichen werden. Der "sectionTitle" type ist wie der name schon sagt, ein Titel für einen Abschnitt vom dashboard
Der Typ des Dashboard-Elements ist ein entscheidendes Attribut.
- ˋgraphˋ:
Wenn der Typ "graph" ist, wird das Element als Diagramm dargestellt. Dies ermöglicht eine Vielzahl von Visualisierungen wie Linien-, Balken-, Kuchen-, Donut- oder Flächendiagramme, abhängig vom graphType.
- ˋswiperˋ:
Der Typ "swiper" erstellt ein Karussell-ähnliches Element, das eine Reihe von anderen Elementen enthält, die durchgeblättert werden können. Jedes Element innerhalb des "swiper"-Typs wird genauso konfiguriert wie ein normales Dashboard-Element, was bedeutet, dass sie jeweils ihren eigenen type, title, etc. haben können.
- ˋreferenceˋ:
Die "reference"-Typ Elemente sind Verweise auf Collections.
- ˋcomparisonˋ:
Außerdem gibt es den type "comparison", wobei man ein timespan auswählt und dieser timespan und der timespan davor mit einander auf einen bestimmten Wert verglichen werden.
- ˋtableˋ:
Desweiteren gibt es einen type "table" wobei mit dem limit attribut gesetzt wird wie viele Einträge von der ausgewählten collection Angezeigt werden sollen.
- ˋsectionTitleˋ
Der "sectionTitle" type ist wie der name schon sagt, ein Titel für einen Abschnitt vom dashboard
## title
@ -18,6 +35,9 @@ Der Titel eines Elements ist ein Objekt, das einen eval, value, contentBefore un
Dies ist ein Untertitel für das Dashboard-Element.
## limit
Eine Zahl, welche beim type table dafür genutzt wird, anzugeben, wie viele Einträge angezeigt werden sollen
## graphType
Das Attribut graphType bestimmt die spezifische Art der Datenvisualisierung für ein Element vom Typ "graph". Die möglichen Werte sind "line" (Linien-Diagramm), "bar" (Balkendiagramm), "donut" (Kreisdiagramm), “pie” (Kuchendiagramm) und "area" (Flächendiagramm).

View File

@ -1,7 +1,8 @@
# /assets
Die /assets-API ist dazu gedacht, den Zugriff auf bestimmte Ordnerpfade zu ermöglichen, die direkt über den Tibi-Server erreichbar sind. Diese Pfade werden in der Konfigurationsdatei (config.yml) definiert und relativ zu dieser Datei interpretiert. Jeder dieser Pfade wird durch einen eindeutigen Namen identifiziert, der in der URL verwendet wird.
URL-Struktur
## URL-Struktur
Die Struktur der URL für den Zugriff auf die Assets ist wie folgt:

View File

@ -1,6 +1,6 @@
# `/_/NAMESPACE/COLLECTION`
Dieser Endpoint ermöglicht Interaktionen mit den Collectionen, die flexible Strukturen zur Organisation und Kategorisierung von Daten darstellen. Sie können Collectioneintrag abrufen, aktualisieren, erstellen und löschen. Jede Collection wird durch einen eindeutigen Namespace und Namen identifiziert.
Dieser Endpoint ermöglicht Interaktionen mit den Collectionen, die flexible Strukturen zur Organisation und Kategorisierung von Daten darstellen. Sie können einen Collectioneintrag abrufen, aktualisieren, erstellen und löschen. Jede Collection wird durch einen eindeutigen Namespace und Namen identifiziert.
## GET /{namespace}/{collection}
@ -12,7 +12,7 @@ Die Antwort ist ein Objekt mit folgenden Eigenschaften:
- `data`: Ein Array von CollectionEntry Objekten.
- `count`: Die Gesamtzahl der Einträge die zurückgegeben wurden.
- `count`: Die Gesamtzahl der Einträge.
```ts
interface Collection {
@ -84,7 +84,7 @@ Diese Anforderung löscht einen vorhandenen Eintrag in einer Collection. Sie nim
Die Antwort ist ein boolean, das true zurückgibt, wenn das Löschen erfolgreich war.
Jede Collection besteht aus mehreren Feldern (CollectionField), die verschiedene Datenpunkte repräsentieren. Jedes Feld hat einen Namen, einen Typ und ggf. eine Reihe von Subfeldern. Die Metadaten eines Feldes (CollectionFieldMeta) können zusätzliche Informationen über das Feld enthalten, wie z.B. ein Label, Hilfstexte, Widget-Typen und mehr.
Jede Collection besteht aus mehreren Feldern (CollectionField), die verschiedene Datenpunkte repräsentieren. Jedes Feld hat einen Namen, einen Typ und ggf. eine Reihe von Subfeldern. Die Metadaten eines Feldes (CollectionFieldMeta) können zusätzliche Informationen über das Feld enthalten, wie z.B. ein Label, Hilfstexte, Widget-Typen, InputProps und mehr.
Eine Collection kann auch Metadaten (CollectionMeta) enthalten, die Informationen über die Collection selbst enthalten.

View File

@ -6,7 +6,7 @@ Dieser Endpoint ermöglicht es Benutzern, sich in das System einzuloggen. Dabei
## Anforderungsparameter
Der /login Endpoint erwartet folgende Daten im Anforderungskörper (options.data):
Der /login Endpoint erwartet folgende Daten im Body:
- `username`: Der Benutzername des Benutzers, der sich anmelden möchte. Typ: String.
@ -35,7 +35,7 @@ interface User {
insertTime: string // Zeitpunkt der Erstellung des Benutzerkontos
updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzerkontos
username: string // Benutzername des Benutzers
role: number // Rolle des Benutzers im System
role: number // Rolle des Benutzers im System (0=admin, 1 = editor, 2 = user)
permissions: any[] // Berechtigungen des Benutzers
meta: {
// Weitere optionale Benutzerinformationen

View File

@ -1,21 +1,19 @@
# `/project`
Dieser Endpoint bietet eine Schnittstelle für den Zugriff und die Manipulation von Projektdaten. Benutzer können Projekte erstellen, abrufen, aktualisieren und löschen.
GET /project
## GET /project
Mit dieser Funktion können Sie eine Liste aller Projekte abrufen. Diese Funktion nimmt optionale Parameter an, die verwendet werden können, um die abgerufenen Projekte zu sortieren oder zu filtern.
Diese Anforderung ruft eine Liste aller Projekte ab. Sie kann optionale Parameter verwenden, um die abgerufenen Projekte zu sortieren oder zu filtern.
Antwort
Diese request ruft eine Liste aller Projekte ab. Sie kann optionale Parameter verwenden, um die abgerufenen Projekte zu sortieren oder zu filtern.
### Antwort
Die Antwort auf diese Anforderung ist ein Objekt mit zwei Eigenschaften:
Die Antwort auf diese request ist ein Objekt mit zwei Eigenschaften:
- `data`: Ein Array von Projekt-Objekten.
- `count`: Die Gesamtzahl der Projekte die zurück gegeben wurden.
- `count`: Die Gesamtzahl der Projekte die es gibt.
Jedes Projekt-Objekt hat die folgenden Eigenschaften:
@ -24,7 +22,7 @@ interface Project {
id?: string // Eindeutiger Identifikator für das Projekt
insertTime?: string // Zeitpunkt der Erstellung des Projekts
updateTime?: string // Letzter Zeitpunkt der Aktualisierung des Projekts
configFile: string // Pfad zur Konfigurationsdatei des Projekts
configFile: string // Pfad zur config.yml des Projekts
name: string // Name des Projekts
description: string // Beschreibung des Projekts
users?: string[] // Array von Benutzer-IDs mit Zugriff auf das Projekt

View File

@ -12,7 +12,7 @@ Die Antwort auf diese Anforderung ist ein Users Objekt mit folgenden Eigenschaft
- `data`: Ein Array von User Objekten.
- `count`: Die Gesamtzahl der Benutzer (optional).
- `count`: Die Gesamtzahl der Benutzer.
Jedes User Objekt hat die folgenden Eigenschaften:

View File

@ -9,7 +9,7 @@ Das GetHookData-Interface enthält Attribute, die spezifisch für die Manipulati
- `filter`: Ein Filter-Objekt, das die Anfragebedingungen für die zu abrufenden Dokumente enthält.
- `selector`: Ein Selektor-Objekt, das festlegt, welche Felder in den zurückgegebenen Dokumenten enthalten sein sollten.
- `offset`: Ein numerischer Wert, der den Startpunkt für die Rückgabe von Dokumenten festlegt.
- `limit` Ei` numerischer Wert, der die maximale Anzahl von Dokumenten festlegt, die zurückgegeben werden sollen.
- `limit` Ein numerischer Wert, der die maximale Anzahl von Dokumenten festlegt, die zurückgegeben werden sollen.
- `sort`: Ein String oder ein Array von Strings, der die Sortierreihenfolge der zurückgegebenen Dokumente bestimmt.
- `pipelineMod`: Eine Funktion, die es ermöglicht, die MongoDB-Abfragepipeline zu modifizieren.
@ -17,7 +17,7 @@ Das GetHookData-Interface enthält Attribute, die spezifisch für die Manipulati
Das PostHookData-Interface enthält ein Attribut, das speziell für POST- und PUT-Hooks relevant ist:
`data`: Das Dokument oder die Daten, die gesendet wurden. Dies ist ein CollectionDocument-Objekt und wird in die Datenbank geschrieben.
`data`: Das Dokument oder die Daten, die gesendet wurden. Dies ist ein CollectionDocument-Objekt und wird in die Datenbank geschrieben. Will man den Datenbankeinträge im hook also modifizieren, so muss dieses Objekt modifiziert werden. Mann muss dieses Objekt idealerweise also einfach modifiziert in dem HookResponse data attribut abspeichern, dies wird nämlich zwischen allen Hooks immer ausgetauscht. Demzufolge ist das veränderte data Objekt dann auch so im nächsten Hook verfügbar.
## JobConfig und JobData Interfaces
@ -35,7 +35,7 @@ Das JobData-Interface enthält ein job-Attribut, das ein JobConfig-Objekt ist un
Die request Funktion liefert ein Objekt zurück, das Informationen über die HTTP-Anfrage enthält:
- `method`: Die HTTP-Methode der Anfrage (GET, POST, PUT, DELETE etc.).
- `remoteAddr`: Die entfernte IP-Adresse der Anfrage.
- `remoteAddr`: Die remote IP-Adresse der Anfrage.
- `clientIp()`: Funktion zum Abrufen der Client-IP-Adresse der Anfrage.
- `host`: Der Host der Anfrage.
- `url`: Die vole URL der Anfrage.
@ -43,7 +43,7 @@ Die request Funktion liefert ein Objekt zurück, das Informationen über die HTT
- `param(p: string)`: Funktion zum Abrufen von URL-Parametern.
- `query(q: string`: Funktion zum Abrufen von URL-Abfrageparametern.
- `header(h: string)`: Funktion zum Abrufen von HTTP-Headern.
- `body(`: Funktion zum Abrufen des HTTP-Body.
- `body()`: Funktion zum Abrufen des HTTP-Body.
- `bodyBytes()`: Funktion zum Abrufen des HTTP-Body als byte array. Wird z.B. für die Umwandlung von iso8859 zu utf8 genutzt.
## Pakete
@ -54,7 +54,7 @@ Jedes der folgenden Attribute ist ein Paket, das spezifische Funktionen bereitst
- `smtp`: Bietet Funktionen zum Senden von E-Mails (SmtpPackage).
- `fs`: Bietet Funktionen zum Interagieren mit dem Dateisystem (FsPackage).
- `tpl`: Stellt Funktionen zum Arbeiten mit Templates zur Verfügung (TplPackage).
- ` http`: Bietet Funktionen zum Senden von HTTP-Anfragen (HttpPackage).
- `http`: Bietet Funktionen zum Senden von HTTP-Anfragen (HttpPackage).
- `debug`: Stellt Funktionen zum Debuggen zur Verfügung (DebugPackage).
- `response`: Bietet Funktionen zur Manipulation der HTTP-Antwort (ResponsePackage).
- `user`: Bietet Funktionen zum Arbeiten mit Benutzern (UserPackage).

View File

@ -2,7 +2,7 @@
Das DebugPackage-Interface bietet Funktionen zur Fehlersuche. Es enthält folgende Methoden:
- `dump(...toDump: any`:
- `dump(...toDump): any`:
void: Diese Methode nimmt eine oder mehrere Datenvariablen entgegen und schreibt diese Daten sowohl in den Server-Log als auch in den Header. Dies kann zur Fehlersuche und -behebung verwendet werden.
- `sentryTraceId(): string`: