# 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.