generated from cms/tibi-docs
backend & types
This commit is contained in:
@@ -1,47 +0,0 @@
|
||||
# Javascript-Kontext im tibi-admin
|
||||
|
||||
Diverse `meta`-Angaben ermöglichen neben der eigentliche Angabe eines festen Wertes wie z.B:
|
||||
|
||||
```yaml
|
||||
defaultValue: "Hallo Welt"
|
||||
```
|
||||
|
||||
auch die Angabe eines Javascript-Ausdrucks, der zur Laufzeit ausgewertet wird. Dieser Ausdruck wird in einem Javascript-Kontext clientseitig ausgeführt und ist mit diversen Variablen vorbelegt.
|
||||
Die Angabe des Javascript-Codes erfolgt dabei meist mit dem `eval`-Attribut dessen Wert der String des Codes ist:
|
||||
|
||||
```yaml
|
||||
defaultValue:
|
||||
eval: "new Date().toISOString().substr(0, 10)"
|
||||
```
|
||||
|
||||
In den Fällen in denen ein Oneliner nicht ausreiched ist, bieten sich "selbst ausführende Funktionen" an, wie z.B.:
|
||||
|
||||
```js
|
||||
(function() {
|
||||
return new Date().toISOString().substr(0, 10)
|
||||
})()
|
||||
```
|
||||
|
||||
Um diese im YAML unterzubringen nutzt man YAML-Multiline-Modifizierer:
|
||||
|
||||
```yaml
|
||||
defaultValue:
|
||||
eval: |
|
||||
(function() {
|
||||
return new Date().toISOString().substr(0, 10)
|
||||
})()
|
||||
```
|
||||
|
||||
## Kontext-Variablen
|
||||
|
||||
Der Javascript-Kontext ist mit folgenden Variablen standardmäßig angereichert:
|
||||
|
||||
| Variable | Datentyp | Bedeutung |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `$namespace` | string | Der Namespacebezeichner des aktuellen Projekts |
|
||||
| `$apiBase` | string | Basis-URL des API-Endpunkts |
|
||||
| `$projectBase` | string | Basis-URL des Projekts-API-Endpunkts (`$apiBase`_/`$namespace`/) |
|
||||
| `$auth` TODO | object | Das aktuelle Auth-Objetc des eingeloggten Benutzers |
|
||||
| `$project` | object | Das aktuelle Projekt-Objekt, siehe [API /project](./../restapi/project.md) |
|
||||
|
||||
Die `meta`-Daten der Collections und Fields bekommen in den Javascript-Kontext der `eval`-Eigenschaften noch jeweils zusätzliche Variablen.
|
||||
@@ -1,9 +0,0 @@
|
||||
# collection.meta..eval Javascript-Kontext
|
||||
|
||||
Die `eval`-Properties der Eigenschaften (wo möglich) bekommen unterhalb des `collection.meta`-Objektes zusätzlich zu den bereits bekannten Variablen (siehe [Allgemeines zum Kontext](./allgemeines.md)) folgende Variable zur Verfügung:
|
||||
|
||||
|
||||
| Variable | Datentyp | Bedeutung |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `$object` | object | Das aktuelle Kollektion-Objekt, siehe [API /collection](./../restapi/collection.md) |
|
||||
| `$navigation` | object | Das aktuelle Navigation-Objekt, also den entsprechenden aktiven Eintrag aus `meta.subNavigation` |
|
||||
@@ -1,104 +0,0 @@
|
||||
# field.meta..eval Javascript-Kontext
|
||||
|
||||
Zuätzlich zu den allgemeinen und Kollektions-spezifischen Variablen, die im Javascript-Kontext der `eval`-Eigenschaften unterhalb des zur Verfügung stehen, gibt es noch folgende Variablen unterhalb des `field.meta`-Objektes für die Evaluierung:
|
||||
|
||||
| Variable | Datentyp | Bedeutung |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `$field` TODO | object | Das aktuelle Feld-Objekt |
|
||||
| `$method` | `"post"`/`"put"` | `"put"` bedeuted, dass der Datensatz gerade in Bearbeitung ist, `"post"` = Datensatz soll angelegt werden |
|
||||
| `$this` | any | Der aktuelle Wert des Feldes |
|
||||
| `$` | object | Das gesamte Objekt des Dokuments |
|
||||
| `$parent` | object oder array | Der Wert des Elternknotens zum aktuellen Feld |
|
||||
| `$stack` | array | Der Stack bis zum Ursprung des gesamten Objekts |
|
||||
|
||||
## Der Stack
|
||||
|
||||
Um die Abhängigkeiten zu bestimmten Werten ausdrücken zu können (z.B. in `meta.dependsOn.eval`), sind die Variablen `$this`, `$`, `$parent` und `$stack` verfügbar.
|
||||
|
||||
Folgendes Beispiel eines Datensatzes verdeutlicht die Belegung, während die Maske zum Editieren im *tibi-admin* geöffnet ist:
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "Mein Datensatz",
|
||||
"meta": {
|
||||
"keywords": [
|
||||
{
|
||||
"key": "pla",
|
||||
"description": "Ah Plah"
|
||||
},
|
||||
{
|
||||
"key": "blup",
|
||||
"description": "Buh Blup"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
wobei wir den `"key": "pla"` betrachten, wären die Inhalte der Variablen folgende:
|
||||
|
||||
`$this`:
|
||||
|
||||
plah
|
||||
|
||||
`$parent` und `$stack[0]`:
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "pla",
|
||||
"description": "Ah Plah"
|
||||
}
|
||||
```
|
||||
|
||||
`$stack[1]`:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"key": "pla",
|
||||
"description": "Ah Plah"
|
||||
},
|
||||
{
|
||||
"key": "blup",
|
||||
"description": "Buh Blup"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
`$stack[2]`:
|
||||
|
||||
```json
|
||||
{
|
||||
"keywords": [
|
||||
{
|
||||
"key": "pla",
|
||||
"description": "Ah Plah"
|
||||
},
|
||||
{
|
||||
"key": "blup",
|
||||
"description": "Buh Blup"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
`$stack[3]`, `entry` und `$`:
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "Mein Datensatz",
|
||||
"meta": {
|
||||
"keywords": [
|
||||
{
|
||||
"key": "pla",
|
||||
"description": "Ah Plah"
|
||||
},
|
||||
{
|
||||
"key": "blup",
|
||||
"description": "Buh Blup"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user