Die folgenden Funktionen stehen im Standard zur Verfügung. Applikationen können auch Expression Eigene Funktionen bereitstellen.
Namespace
Es ist immer notwendig den Namespace der Funktion anzugeben. Dieser wird mit Punkt (.
) verknüpft.
Die Ausnahme ist der Global
Namespace. Dieser kann weggelassen werden. Zum Beispiel sind Global.EndOfTime()
und EndOfTime()
äquivalent.
Typen-Umwandlung
Die Angegebenen Rückgabe-Werte der Funktionen sind fixiert. Jedoch werden Parameter-Typen u.U. umgewandelt in den entsprechend angegeben Typ.
Zum Beispiel:
Wenn ein String
als Parameter erwartet wird und ein DateTime
übergeben wird. Dann wird zuerst das DateTime
automatisch in einen String
umgewandelt. z.B. in "2022-10-22 12:00:00"
.
Wenn ein Int
als Parameter erwartet wird und ein String
übergeben wird, z.B. "Hello"
. Dann kann keine automatische Konvertierung erfolgen und es kommt zu einem Fehler.
Siehe auch Expression Typen.
Operatoren
Für ein besseres Verständnis werden einige Operatoren als Funktionen zur Verfügung gestellt. Diese sind hier aufgelistet. Weitere Operatoren finden Sie unter Expression Operatoren.
Funktion Namespace Global | Beschreibung | Parameter |
---|
Contains(hayStack: String, needle: String): Boolean
| Gibt zurück ob der Teil-String needle in hayStack enthalten ist. | |
ContainsCI(hayStack: String, needle: String): Boolean
| Gibt zurück ob der Teil-String needle in hayStack enthalten ist. CI = case-insensitive = Gross-/Kleinschreibung wird ignoriert. | |
BeginsWith(hayStack: String, needle: String): Boolean
| Gibt zurück ob haystack mit needle beginnt. | |
BeginsWithCI(hayStack: String, needle: String): Boolean
| Gibt zurück ob haystack mit needle beginnt. CI = case-insensitive = Gross-/Kleinschreibung wird ignoriert. | |
EndsWith(hayStack: String, needle: String): Boolean
| Gibt zurück ob haystack mit needle endet. | |
EndsWithCI(hayStack: String, needle: String): Boolean
| Gibt zurück ob haystack mit needle endet. CI = case-insensitive = Gross-/Kleinschreibung wird ignoriert. | |
Matches(hayStack: String, pattern: String): Boolean
| Gibt zurück ob haystack dem Muster pattern entspricht. | |
MatchesCI(hayStack: String, pattern: String): Boolean
| Gibt zurück ob haystack dem Muster pattern entspricht. | |
EqualsCI(one: String, two: String): Boolean
| Gibt zurück ob die beiden Strings one und two gleich sind. CI = case-insensitive = Gross-/Kleinschreibung wird ignoriert. | |
IsNull(value: Any): Boolean
| Gibt zurück ob es keinen Wert hat, der Wert null ist. | |
IsNotNull(value: Any): Boolean
| Gibt zurück ob ein Wert enthalten ist, der Wert ungleich null ist. Gets a value indicating whether value is not null | |
Date
Die folgenden Funktionen stehen im Global
namespace zur Verfügung.
Funktion Namespace Global | Beschreibung | Parameter |
---|
UtcEndOfTime(): DateTime
| Eine Konstante des letzten Zeit-Wertes in UTC. | |
EndOfTime(): DateTime
| Eine Konstante des letzten Zeit-Wertes . | |
UtcEpochStart(): DateTime
| Eine Konstante der Start-Zeit der UNIX Epoche. | |
Current time
These functions can be mapped to most databases and will not cause local evaluation.
Funktion Namespace Global | Beschreibung | Parameter |
---|
UtcNow(): DateTime
| Gets the UTC time | |
Now(): DateTime
| Gets the local time | |
UtcToday(): DateTime
| Equivalent to UtcNow.Day | |
Today(): DateTime
| Equivalent to Now.Day | |
Day(): Int
| Gets the day of UtcNow | |
Month(): Int
| Gets the month of UtcNow | |
Year(): Int
| Gets the year of UtcNow | |
Hour(): Int
| Gets the hour of UtcNow | |
Minute(): Int
| Gets the minute of UtcNow | |
Second(): Int
| Gets the second of UtcNow | |
Millisecond(): Int
| Gets the millisecond of UtcNow | |
Custom dates and times
Funktion Namespace Global | Beschreibung | Parameter |
---|
CreateDate(year : Int, month: Int, day: Int, hour: Int = 0, minute: Int = 0, second: Int = 0): DateTime
| Erzeugt einen Zeitstempel in der lokalen Zeitzone. | year: Int Datum: Jahr
month: Int Datum: Monat
day: Int Datum: Tag
hour: Int = 0 Uhrzeit: Stunde. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
minute: Int = 0 Uhrzeit: Minute. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
second: Int = 0 Uhrzeit Sekunde. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
|
CreateUtcDate(year : Int, month: Int, day: Int, hour: Int = 0, minute: Int = 0, second: Int = 0): DateTime
| Erzeugt einen Zeitstempel in UTC. | year: Int Datum: Jahr
month: Int Datum: Monat
day: Int Datum: Tag
hour: Int = 0 Uhrzeit: Stunde. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
minute: Int = 0 Uhrzeit: Minute. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
second: Int = 0 Uhrzeit Sekunde. Vorbelegt mit 0 wenn hier kein anderer Wert eingetragen wird.
|
CreateTime(hour: Int, minute: Int, second: Int): TimeSpan
| Erzeugt eine Zeitspanne. | hour: Int = 0 Anzahl Stunden
minute: Int = 0 Anzahl Minuten
second: Int = 0 Anzahl Sekunden
|
Extract date parts
Funktion Namespace Global | Beschreibung | Parameter |
---|
Day(dateTime): Int
| Gets the day of the given dateTime | |
Month(dateTime): Int
| Gets the month of the given dateTime | |
Year(dateTime): Int
| Gets the year of the given dateTime | |
Hour(dateTime): Int
| Gets the hour of the given dateTime | |
Minute(dateTime): Int
| Gets the minute of the given dateTime | |
Second(dateTime): Int
| Gets the second of the given dateTime | |
Millisecond(dateTime): Int
| Gets the millisecond of the given dateTime | |
Add/Subtract date parts
Funktion Namespace Global | Beschreibung | Parameter |
---|
AddMinutes(expression: DateTime, value: int): DateTime
| Adds the given value as minutes to the given dateTime | |
AddHours(expression: DateTime, value: int): DateTime
| Adds the given value as hours to the given dateTime | |
AddDays(expression: DateTime, value: int): DateTime
| Adds the given value as days to the given dateTime | |
AddMonths(expression: DateTime, value: int): DateTime
| Adds the given value as months to the given dateTime | |
AddYears(expression: DateTime, value: int): DateTime
| Adds the given value as years to the given dateTime | |
The following formatting constants are available for formatting DateTime
or TimeSpan
values in the current culture.
Funktion Namespace Global | Beschreibung | Parameter |
---|
ShortTimeFormat(): String
| Corresponds to t ; formats to e.g. 06:30 | |
LongTimeFormat(): String
| Corresponds to T ; formats to e.g. 06:30:00 | |
ShortDateFormat(): String
| Corresponds to d ; formats to e.g. 10.04.2008 | |
LongDateFormat(): String
| Corresponds to D ; formats to e.g. Thursday, 10 April 2008 | |
An application can use these constants as follows:
Function: Format(Now, ShortTimeFormat)
Operator: Now => ShortTimeFormat
(described in the Expression Grammatik )
System
Die folgenden Funktionen stehen im System
namespace zur Verfügung.
Funktion Namespace System | Beschreibung | Parameter |
---|
CreateGuid(String): Guid
| creates a Guid from the given parameter | |
Die folgenden Funktionen stehen im Global
namespace zur Verfügung.
Funktion Namespace Global | Beschreibung | Parameter |
---|
Format(value, formatString): String
| Formats the given value into the formatString | |
If(boolean, object, object): void
| Tests the first argument, returning the second if true and the third if false | |
The Format
function is relatively limited. Applications are encouraged to use the Expression Text Formatierung instead.
String
Die folgenden Funktionen stehen im String
Namespace zur Verfügung.
Funktion Namespace String | Beschreibung | Parameter |
---|
Trim(text): String
| Entfernt führende und folgende (White-) Spaces Zeichen von text | text: String
|
substring(text, startIndex [, laenge])
| Kopiert Text ab der Position startIndex aus text mit der optionalen Länge laenge | text: String
startIndex: Int
laenge: Int (optional)
|
replace(text, suchText, ersatzText)
| Entfernt in text alle Vorkommnisse von suchText mit ersatzText | text: String
sucheText: String
ersatzText: String
|
tolower(text)
| Konvertiert alle Zeichen in text zu Kleinbuchstaben | text: String
|
toupper(text)
| Konvertiert alle Zeichen in text zu Grossbuchstaben. | text: String
|
length(text)
| Die Anzahl Zeichen in text | text: String
|
left(text, laenge)
| Kopiert die ersten laenge Zeichen aus text von links. | text: String
laenge: Int
|
right(text, laenge)
| Kopiert die letzten laenge Zeichen aus text von von rechts. | text: String
laenge: Int
|
chr(zahl)
| Gibt das Zeichen mit der Nummer zahl zurück. | zahl: Int
|
TAB()
| Text bestehend aus dem Tab-Zeichen | - |
CR()
| Text bestehend aus dem CarriageReturn -Zeichen | - |
LF()
| Text bestehend aus dem LineFeed-Zeichen | - |
CRLF()
| Text bestehend aus dem CarriageReturn- und LineFeed-Zeichen | - |
Math
Die folgenden Funktionen stehen im Math
Namespace zur Verfügung.
Funktion Namespace Math | Beschreibung | Parameter |
---|
ceiling(value): result
| Rundet value auf die nächst höhere Ganzzahl auf. Unterstützte Datentypen: double, decimal | |
floor(value): result
| Rundet value auf die nächst tiefere Ganzzahl ab. Unterstützte Datentypen: double, decimal | |
round(value, granularity = 1): result
| Rundet value mathematisch auf oder ab. Die Genauigkeit wird durch granularity bestimmt. So rundet “0.05” einen Betrag auf 5 Rappen genau. Falls der Parameter weggelassen wird wird auf eine Ganzzahl gerundet. Unterstützte Datentypen: double, decimal | |
min(value1, value2): result
| Bestimmt das Minimum der beiden Parameter. Unterstützte Datentypen: double, decimal, byte, short, int, long | |
max(value1, value2): result
| Bestimmt das Maximum der beiden Parameter. Unterstützte Datentypen: double, decimal, byte, short, int, long | |
Data
Die folgenden Funktionen stehen im this
namespace zur Verfügung.
Funktion Namespace this | Beschreibung | Parameter |
---|
Persisted(): Boolean
| Gibt zurück ob das aktuelle Objekt gespeichert wurde. Gets a value indicating whether the current object has been stored. | |
Deleted(): Boolean
| Gibt zurück ob das aktuelle Objekt gelöscht wurde. Gets a value indicating whether the current object has been deleted. | |
ValuesChanged(): Boolean
| Gibt zurück ob das aktuelle Objekt geändert wurde seitdem es geladen wurde. | |
Edited(): Boolean
| Gets a value indicating whether the object is considered to have been changed (some UX will want to consider an object not to have been edited even though some fields have changed). | |
MetaClass(): string
| Gibt den Namen der MetaClass für das aktuelle Objekt zurück. | |
SetValue(Property, Value): bool
| Setzt den Wert des Property mit dem mitgegebenen Value. | Property: Property Referenz oder string um die Property zu identifizieren.
Value: Wert der gesetzt werden soll.
|
GetValue(Property): Object
| Gibt den aktuellen Wert eines Properties zurück. | Property: Property Referenz oder string um die Property zu identifizieren.
|
User
Die folgenden Funktionen stehen im User
namespace zur Verfügung:
Funktion Namespace User | Beschreibung | Parameter |
---|
IsInRole(Role: String): Boolean
| Gibt an ob der aktuelle Benutzer die angegebene Rolle besitzt. | |
Id(): Guid
| Die Id des aktuellen Benutzers. | |
Claim(clainName: string)
| Zugriff auf die Claims des aktuellen Users. | |
Language
Die folgenden Funktionen stehen im Language
namespace zur Verfügung:
Funktion Namespace Language | Beschreibung | Parameter |
---|
Current(): String
| Gibt die aktuelle Sprache des Benutzers zurück. z.B. “de-CH” oder “de” | |
Translate(Translationkey: String): String
| Gibt die Übersetzung für den mitgegebenen Übersetzungsschlüssel zurück. Die Sprache des aktuellen Benutzers wird gewählt zur Übersetzung. | |
Breakpoint
Der Breakpoint Namespace stellt Funktionen zur Layout-Steuerung bereit:
Funktion Namespace Breakpoint | Beschreibung | Parameter |
---|
IsDesktop(): Boolean
| Gibt zurück, ob aktuell das Desktop-Layout angezeigt wird. | |
IsTablet(): Boolean
| Gibt zurück, ob aktuell das Tablet-Layout angezeigt wird. | |
IsPhone(): Boolean
| Gibt zurück, ob aktuell das Phone-Layout angezeigt wird. | |
CurrentContext
Der Context eines Benutzer beschreibt die aktuell aktive Rolle welche ausgewählt/aktiv ist. Ein User kann mehrere Rollenzuweisungen haben - jedoch im Context nur jeweils eine Rolle aktiv haben.
Die folgenden Funktionen stehen im CurrentContext
namespace zur Verfügung:
Funktion Namespace CurrentContext | Beschreibung | Parameter |
---|
Id(): Any
| Gibt die aktuelle Id des Context des Users zurück. Wird z.B. auf eine Person in der User-Role Zuweisung verwiesen so wird die Id der Person zurückgegeben. | |
Class(): String
| Gibt die Klasse des aktuellen Context zurück. z.B. “Person”. | |
Role(): String
| Gibt die Rolle des aktuellen Context zurück. z.B. “Administrator” | |
CurrentScope
Der Scope eines Benutzer schränkt alle Anfragen auf diesen Scope ein
Die folgenden Funktionen stehen im CurrentScope
namespace zur Verfügung:
Funktion Namespace CurrentContext | Beschreibung | Parameter |
---|
Scope(): String
| Gibt den aktuellen Scope zurück | |
Aggregation
Die folgenden Funktionen stehen im Aggregation
namespace zur Verfügung:
Funktion Namespace Aggregation | Beschreibung | Parameter |
---|
Count(Relation/Klasse: string): Int
| Wenn mit einer Klasse ausgeführt wird beim Count die Anzahlt der vorhandenen Einträge in der Tabelle ermittelt. Wird eine Relation eingesetzt so wird versucht diese im aktuellen Kontext zu evaluieren und das Resultat anhand der verbundenen Objekte berechnet. | |
Count(Relation/Klasse: string, IsRelation: bool): Int
| Siehe Count() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
IsRelation: bool auf true gesetzt wird exklusiv nur nach Relationen gesucht. Wenn dieser auf false ist wird versucht die entsprechende Klasse zu finden.
|
Count(Relation/Klasse: string, Filter: string): Int
| Siehe Count() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Klasse interpretiert werden kann.
|
Count(Relation/Klasse: string, Filter: string, IsRelation: bool): Int
| Siehe Count() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Klasse interpretiert werden kann.
IsRelation: bool auf true gesetzt wird exklusiv nur nach Relationen gesucht. Wenn dieser auf false ist wird versucht die entsprechende Klasse zu finden.
|
Exists(Relation/Klasse: string): bool
| Exists() Gibt zurück ob mindestens ein passender Eintrag vorhanden ist.
Wird eine Relation eingesetzt so wird versucht diese im aktuellen Kontext zu evaluieren und das Resultat anhand der verbundenen Objekte berechnet. | |
Exists(Relation/Klasse: string, IsRelation: bool): bool
| Siehe Exists() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
IsRelation: bool auf true gesetzt wird exklusiv nur nach Relationen gesucht. Wenn dieser auf false ist wird versucht die entsprechende Klasse zu finden.
|
Exists(Relation/Klasse: string, Filter: string): bool
| Siehe Exists() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Klasse interpretiert werden kann.
|
Exists(Relation/Klasse: string, Filter: string, IsRelation: bool): bool
| Siehe Exists() | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Klasse interpretiert werden kann.
IsRelation: bool auf true gesetzt wird exklusiv nur nach Relationen gesucht. Wenn dieser auf false ist wird versucht die entsprechende Klasse zu finden.
|
Lookup(Relation/Klasse: string, Filter: string, Selector: string): object
| Holt einen Wert aus einer Property von einer spezifischen Entität welche über einen Filter eingeschränkt wird. | Relation/Klasse: string Name der Klasse oder Name der Relation. Anhand des Namens wird bestimmt ob es sich in diesem Kontext um eine Klasse oder Relation handelt.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Klasse interpretiert werden kann.
Selector: string Der dritte Parameter gibt den Pfad zur Property an welche zurückgegeben werden soll falls ein Resultat gefunden wird.
|
All(Relation: string, Filter: string, Layout: string, Delimiter: string): string
| Reduziert eine Relation welche auf mehrere Objekte zeigt zu einer einzigen Zeichenfolge. z.B. Fabrizio Niedda, Remo von Ballmoos, Daniel Graf | Relation: string Name der Relation welche reduziert werden soll.
Filter: string Der Filter kann das Resultat weiter verfeinern. z.B. können nur aktive Personen gewählt werden. Der string muss eine gültige Expressions beinhalten die im Kontext der Ziel-Klasse interpretiert werden kann.
Layout: string Das Layout welches verwendet wird um den Titel des Objektes zu berechnen.
Delimiter: string Das Trennzeichen welches verwendet wird. Standardmässig wird ein “,” verwendet.
|
Navigation
Die folgenden Funktionen stehen im Navigation
namespace zur Verfügung:
Funktion Namespace Navigation | Beschreibung | Parameter |
---|
HasParentOfClass(ClassName: string): boolean
| Gibt zurück, ob das aktuelle Objekt ein Parent-Objekt der angegebenen Klasse hat. | |
ParentProperty(PropertyName: string): any
| Gibt den Wert des Properties mit dem angegebenen Namen auf dem Parent-Objekt zurück. Rückgabewert ist null , falls kein Parent-Objekt existiert. | |
ParentOfClassProperty(ClassName: string, PropertyName: string): any | Gibt den Wert des Properties mit dem angegebenen Namen auf dem Parent-Objekt mit der angegebenen Klasse zurück. Rückgabewert ist null , falls kein Parent-Objekt der angegebenen Klasse existiert. | |
Remote Data
Die folgenden Funktionen stehen im RemoteData
namespace zur Verfügung:
Funktion Namespace RemoteData | Beschreibung | Parameter |
---|
GetSingleValue(url: string): Promise<any>
| Fetcht einen Wert vom angegebenen Endpunkt. | |