Neben dem einfachen Zugriff können Sie die Konfiguration nutzen, um verschiedene Versionen Ihres Workflow-Markups zu erzeugen. So können Sie z. B. Markup generieren, indem Sie eine Schleife für eine Mehrfach-Texteingabe verwenden, oder abhängig von einer Checkbox-Eingabe.
Hilfsfunktionen sind für diesen Zweck oft ideal. Die folgenden Hilfsfunktionen sind verfügbar:
Allgemeine Hilfskräfte
Schlüsselwörter und Beschreibung
Nachfolgend finden Sie die Liste der Schlüsselwörter und ihre Beschreibungen mit einem Beispielcode und einer Beispielausgabe:
zuweisen: Eine Variable zuweisen
{#assign "myval"}
This is a variable
{/assign}
Ausgabe: Eine Variable "myVal" im Kontext mit dem entsprechenden Wert
Mathe: Einfache Arithmetik (mit +,-,*,/,%)
{math myNum "+" 5}
jeder: Sie können über @index auf den aktuellen Schleifenindex und über @key auf den aktuellen Schlüsselnamen zugreifen. Sie können auch @first und @last verwenden, um zu prüfen, ob Sie sich im ersten/letzten Schritt der Iteration befinden
{#each myObj}
{@index}
{/each}
Ausgabe: Z.B.: "0 1 2 3 4"
for: Eine for-Schleife, die eine einfache Wiederholung ermöglicht. Ein Operator kann einer der folgenden sein [==,>,<,>=,<=]. Ein Hash-Parameter kann verwendet werden, um den Zähler zu erhöhen oder zu verringern.
{#for 5 ">" 0 after="-2"}
{this}
{/for}
vergleichen: Vergleicht zwei Werte. Der Operator kann einer der folgenden sein: [==, !=, <, <=, equalsIgnoreCase]
{comapre myStr "==" "Hallo}
Ausgabe: True, wenn myStr "Hallo" ist
Schalter, Fall: Ein switch/case-Konstrukt
{#switch type}
{#case "article"}
This is an article
{/case}
{#case "resource"}
This is a resource
{/case}
Ausgabe: Wenn der Typ "Artikel" ist, lautet die Ausgabe "Dies ist ein Artikel".
wenn: Fügt einen Block ein, wenn die Bedingung als wahr bewertet wird.
{#if (or (and isCar hasPlate) (and (not isCar) hasLicense)))}
Allowed to drive.
{else}
Not allowed to drive.
Ausgabe: Wenn die booleschen Variablen "isCar=false" und "hasLicense=true" vorhanden sind, lautet die Ausgabe "Allowed to drive".
es sei denn: Umgekehrt davon
{unless trueVar}
This is text
{/unless}
Ausgabe: Bei "trueVar=true" lautet die Ausgabe "This is text".
und: Das logische 'und' von mehreren booleschen Werten
{and isCar hasPlate}
output: True oder False, abhängig von den Variablen
oder: Das logische 'oder' von mehreren booleschen Werten
{or isCar hasPlate}
output: True oder False, abhängig von den Variablen
nicht: Das logische 'not' eines booleschen Wertes
{not isCar}
Ausgabe: True, wenn "isCar=false"
Sammlung: Eine Hilfsfunktion, die die Größe oder die Singleton-Eigenschaft einer Sammlung zurückgibt. Der Operator kann einer von ["size", "is_not_singleton", "is_singleton"] sein.
{collection myColl "size"}
Ausgabe: z.B.4
Nachschlagen: Ermöglicht die dynamische Auflösung von Parametern mit Hilfe von Variablen, z. B. zur Auflösung von Werten für Array-Indizes
{#each bar}
{lookup ../foo@index}
{/each}
mit: Kann verwendet werden, um einen Parameter an eine Hilfskraft zu übergeben
{#with myVal}
{#ech myObj}
{/each}
{/with}
String-Helfer
Nachfolgend finden Sie die Schlüsselwörter, die als String Helpers verwendet werden, mit Beschreibung, Beispielcode und Beispielausgabe,
caseformat: Groß-/Kleinschreibung Formatierung für Strings. Operator kann einer von ["lowercase", "lowercase_underscore", "lowercase_hyphen"] sein.
{caseFormat myStr "lowercase_underscore"}
output: Für myStr="Dies ist eine Zeichenkette" lautet die Ausgabe "dies_ist_eine_Zeichenkette".
capitalizeFirst: Um den ersten Buchstaben groß zu schreiben
{capitalizeFirst value}
Ausgabe: Wenn der Wert "teamviewer" ist, lautet die Ausgabe "Teamviewer".
ausschneiden: Entfernt alle Werte von Argumenten aus der angegebenen Zeichenkette
{cut value " "}
output: Wenn der Wert "String mit Leerzeichen" lautet, wird "Stringwithspaces" ausgegeben.
defaultIfEmpty: Wenn der Wert zu False ausgewertet wird, wird der angegebene Standardwert verwendet. Andernfalls wird der Wert
{defaultIfEmpty value "nothing"}
Ausgabe: Wenn value="false", ist die Ausgabe "nichts".
verbinden: Verbindet ein Array, einen Iterator oder eine Iterable mit einer Zeichenkette
{join "a" "b" "c" " // " prefix="" suffix=""}
Ausgabe: "a//b//c"
zentrieren: Zentriert den Wert in einem Feld mit einer bestimmten Breite
{center value size=19 pad=" "}
ljust: Richtet den Wert in einem Feld mit einer bestimmten Breite links aus
{ljust value 20 pad=" "}
rjust: Der Wert wird rechtsbündig ausgerichtet, wenn das Feld eine bestimmte Breite hat.
{rjust value 20 pad=" "}
Teilzeichenfolge: Unterteilung der Zeichenkette in Teilzeichenketten
{substring value 3 }
{substring value 0 3 }
output: Wenn der Wert "TeamViewer" ist, lautet die Ausgabe "Viewer" bzw. "Team".
klein: Konvertiert eine Zeichenkette in Kleinbuchstaben
{lower value}
Ausgabe: Wenn der Wert "TeamViewer" ist, lautet die Ausgabe "teamviewer".
Großbuchstaben: Konvertiert eine Zeichenkette in Großbuchstaben
{upper value}
output: Wenn der Wert "Hello" ist, lautet die Ausgabe "HELLO".
Slugify: Konvertiert in Kleinbuchstaben, entfernt Nicht-Wortzeichen (alphanumerische Zeichen und Unterstriche) und wandelt Leerzeichen in Bindestriche um. Außerdem werden führende und nachfolgende Leerzeichen entfernt.
{slugify value}
output: Wenn der Wert "TeamViewer ist großartig" lautet, wird die Ausgabe "teamviewer-ist-großartig" sein.
stringFormat: Formatiert die Variable entsprechend dem Argument, einem String-Formatierungsspezifizierer
{stringFormat value param1}
Ausgabe: Wenn value="Hallo %s" und param1="TeamViewer", lautet die Ausgabe "Hallo TeamViewer".
stringTags: Entfernt alle [X]HTML-Tags
{stripTags value}
Großschreiben: Großschreibung aller durch Leerzeichen getrennten Wörter in einem String
{ capitalize value fully=false}
output: Wenn der Wert "Mein erster Beitrag" ist, lautet die Ausgabe "Mein erster Beitrag".
abkürzen: Kürzt eine Zeichenkette ab, wenn sie länger als die angegebene Anzahl von Zeichen ist. Gekürzte Zeichenfolgen enden mit einer übersetzbaren Ellipsis-Sequenz ("...")
{abbreviate value 6 }
Wenn der Wert "TeamViewer ist großartig" ist, wird die Ausgabe "TeamVi..." sein.
wordWrap: Bricht Wörter in der angegebenen Zeilenlänge um
{ wordWrap value 5 }
output: Wenn der Wert "Meine Wörter sind lang" ist, dann wird "Meine Wörter sind lang" ausgegeben.
ersetzen: Ersetzt jeden Teilstring dieser Zeichenkette, der mit der literalen Zielsequenz übereinstimmt, durch die angegebene literalen Ersetzungssequenz
{ replace value "..." "rocks"}
output: Wenn der Wert "Handlebars ..." lautet, wird "Handlebars rocks" ausgegeben.
yesno: Überträgt die Werte für wahr, falsch und (optional) null auf die Zeichenketten "ja", "nein" und "vielleicht".
{ yesno value yes="yes" no="no" maybe="maybe" }
Datumsformat: Die Formatoption kann als Parameter oder Hash (auch bekannt als Namensparameter) angegeben werden. Eines von "full" (z. B. Dienstag, 19. Juni 2012), "medium" (z. B. 19. Juni 2012), "short" (z. B. 6/19/12) oder "pattern" (ein Datumsmuster).
{dateFormat date ["format"]
[format="format"]
[tz=timeZone|timeZoneId]}
numberFormat: Der Parameter Format ist einer von["Ganzzahl", "Währung", "Prozent", "Muster"]. Weitere verfügbare Optionen sind: groupingUsed (Legt fest, ob im Format eine Gruppierung verwendet wird oder nicht), maximumFractionDigits (maximale Anzahl von Ziffern im Bruchteil), maximumIntegerDigits (maximale Anzahl von Ziffern im Ganzzahlteil), minimumFractionDigits (minimale Anzahl von Ziffern im Bruchteil), minimumIntegerDigits (Mindestanzahl von Ziffern im ganzzahligen Teil), parseIntegerOnly (ob Zahlen nur als Ganzzahlen geparst werden sollen oder nicht) und roundingMode (der in diesem NumberFormat verwendete Rundungsmodus [UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN, HALF_EVEN, UNNECESSARY])
{numberFormat number ["format"] [locale=default]}
Beispiele
Schauen wir uns ein paar Beispiele an.
{
"General": {
"use_camera": {
"title": "Use Camera of Smartglasses",
"inputType": "checkbox-input",
"value": "true"
}
}
}
<onresume>
<rule id="auto">
<expression>1</expression>
<actions>
§{#if General.use_camera.value}§
<action ref="start_cam"/>
§{/if}§
</actions>
</rule>
</onresume>
Wie Sie sehen, können Sie mit dem if-Schlüsselwort eine Aktion nur ausführen, wenn der entsprechende Konfigurationsparameter auf true gesetzt ist. Es ist wichtig zu beachten, dass alle Schlüsselwörter innerhalb des Bereichs verwendet werden, indem zuerst ein # geschrieben wird.
Hier ist ein weiteres Beispiel, das beide verwendet. In diesem Beispiel verwenden wir eine Mehrfach-Dropdown-Eingabe, um eine Reihe von Schaltflächen konfigurieren zu können, die dann in der Benutzeroberfläche angezeigt werden. Als letzte zwei Schaltflächen generieren wir einen Barcode-Scan in Abhängigkeit davon, ob eine Checkbox-Eingabe gesetzt ist, sowie eine weitere Standard-Schaltfläche. Diese werden ganz rechts in der Oberfläche angezeigt.
{
"Configuration": {
"buttons": {
"title": "Function Keys",
"inputType": "multiple-dropdown-input",
"elements": [
{
"name": "TAB",
"content": "ANDRRES_key_tab",
"type": "TEXT",
"translatable": true
},
{
"name": "DELETE",
"content": "ANDRRES_key_delete",
"type": "TEXT",
"translatable": true
},
{
"name": "BACKSPACE",
"content": "ANDRRES_key_backspace",
"type": "TEXT",
"translatable": true
},
{
"name": "F1",
"content": "F1",
"speech_cmd": "F 1",
"type": "TEXT"
},
{
"name": "F2",
"content": "F2",
"speech_cmd": "F 2",
"type": "TEXT"
}
],
"value": [
{
"name": "TAB",
"content": "ANDRRES_key_tab",
"type": "TEXT",
"translatable": true
},
{
"name": "DELETE",
"content": "ANDRRES_key_delete",
"type": "TEXT",
"translatable": true
}
]
}
}
}
<ui_update id="show_key_input_footer">
<widget_params>
<ui_element name="FOOTER_L2">
<param name="VISIBILITY">INVISIBLE</param>
</ui_element>
<ui_element name="RETURN_L1">
<param name="menu_id" descriptor="">0</param>
</ui_element>
§{#each Configuration.buttons.value}§
<ui_element name="§{name}§">
<param name="menu_id" descriptor="">§{math @index "+" 1}§</param>
</ui_element>
§{#if @last}§
§{#if Configuration.enable_camera.value}§
<ui_element name="CAMERA">
<param name="MENU_ID">§{math @../index "+" 2}§</param>
</ui_element>
<ui_element name="ENTER">
<param name="MENU_ID">§{math @../index "+" 3}§</param>
</ui_element>
§{else}§
<ui_element name="ENTER">
<param name="MENU_ID">§{math @../index "+" 2}§</param>
</ui_element>
§{/if}§
§{/if}§
§{/each}§
</widget_params>
</ui_update>
Wie Sie sehen können, lassen sich auf diese Weise hochgradig konfigurierbare Komponenten erstellen.