Code
Das Code-Tag ist verfügbar in jedem Field-Typen und bietet die Möglichkeit, die Ausgabe eines Field mittels JavaScript beliebig zu implementieren.
Mehr Beispiele zu Fields oder eine Einführung zu JavaScript finden Sie im Layouter-Handbuch.
Aufrufe in Code
Innerhalb des <Code>-Elements sind zwei Varianten möglich, wie man Code ausführen kann.
Abgekürzter Aufruf
Besteht der Code aus nur einer Anweisung, kann er direkt in den Block geschrieben werden.
Das
returnStatement ist implizit.
<Text Name="Footer">
<Code>$.getText('Profile.User.FirstName')</Code>
</Text>Ausformulierter Aufruf
Besteht der Code aus mehreren Anweisungen und/oder enthält Variabeln, muss er innerhalb der
function main()geschrieben werden.Innerhalb desselben
Code-Blocks können auch andere Funktionen zur Werwendung inmaindefiniert werden.Das
returnStatement inmainmuss explizit gesetzt werden.
<Text Name="Footer">
<Code>
function main() {
let firstName = $.getString('Profile.User.FirstName');
if (firstName == 'Foo') {
firstName = appendBar(firstName);
}
return firstName;
}
function appendBar(str) {
return str + 'Bar';
}
</Code>
</Text>Funktionsbibliotheken via “GlobalCode”
Wenn man Funktionen für viele Felder bereitstellen möchte, kann dies über GlobalCode-Konfigurationen zentral gesteuert und verteilt werden.
Weitere Informationen und Beispiele sind in der https://primesoft-group.atlassian.net/wiki/spaces/PDT/pages/31457334-Seite beschrieben.
API-Beschreibung
In einem Code-Element leitet $ jeweils die Nutzung der primedocs-API ein.
Zugriff auf Felder
Mit $("[Feld]") greift man auf Forms-Felder, Fields sowie Profilfelder zu. Folgend ein Beispiel pro Feld-Art:
Forms-Feld |
|
Field |
|
Profil-Feld: Benutzer |
|
Profil-Feld: Organisation |
|
Funktionsaufrufe
Weiter leitet $. den Aufruf einer primedocs-eigenen Funktionen ein: $.myFunction()
Es ist möglich, allgemeine JavaScript-Funktionen zu verwenden (z.B. foreach() auf Arrays (ObjectCollections) oder replace() auf Strings). Konsultieren Sie für mehr Informationen Mozilla’s JavaScript Dokumentation.
Rückgabewert von Field-Typen
Der Rückgabewert von main() in Code muss vom Datentyp her immer dem Field entsprechen. Beispielsweise ist es nicht möglich, ein Date-Forms-Feld in einem Text-Field auszugeben. Umgekehrt kann ein Date-Field keinen String/Text ausgeben sondern nur Date-Forms-Felder oder Date-Fields.
Hier eine Übersicht:
Field-Typ | Rückgabetyp |
|---|---|
Text |
|
FormattedText |
|
WordContent |
|
InlineWordContent |
|
WordTableRows |
|
Date |
|
YesNo |
|
Picture | Image (z. B. |
Object | JavaScript Objekt, welches dem Schema entspricht. |
ObjectCollection | Ein JavaScript Array mit Objekten, welche dem Schema entsprechen. |
Native Funktionen
In der offiziellen Dokumentation von Mozilla können alle nativen Funktionen eingesehen und über einen Playground ausprobiert werden. Diese können gemäss dieser Liste auch in primedocs Code verwenden werden.
primedocs-eigene Funktionen
Es folgt eine sortierbare Tabelle mit allen primedocs-eigenen Funktionen: welcher API sie angehören und dem jeweiligen Rückgabetyp. Eine Funktion setzt sich dann immer zusammen aus [API].[Funktion].
API | Funktion | Rückgabetyp |
|---|---|---|
$ | getDateAsText(…) | String |
$ | joinNonEmpty(…) | String |
$ | formatDate(…) | String |
$ | formatNumber(…) | String |
$ | getDate(…) | Date |
$ | getReference(…) | FieldReference |
$.formattedText | fromText(…) | FormattedText |
$.formattedText | parse(…) | FormattedText |
$.wordContent | fromFormattedText(…) | WordContent |
$.wordContent | fromText(…) | WordContent |
$.inlineWordContent | extractParagraphContentFromWordContent(…) | InlineWordContent |
$.inlineWordContent | extractParagraphContentFromFormattedText(…) | InlineWordContent |
$.translations | getText(…) | String |
$.translations | getFormattedText(…) | FormattedText |
$.snippets | getFormattedText(…) | FormattedText |
$.snippets | getWordContent(…) | WordContent |
$.formattedText | getBuilder(…) | FormattedText-Builder |
$.wordContent | getBuilder(…) | WordContent-Builder |
$.wordTableRows | getBuilder(…) | WordTableRows-Builder |
Getters
API | Funktion | Rückgabetyp |
|---|---|---|
| $(…) | Feldtyp (je nach Id) |
$ | get(…) | Feldtyp (je nach Id) |
$ | getText(…) | String |
$ | getDate(…) | Date |
$ | getFormattedText(…) | FormattedText |
$ | getWordContent(…) | WordContent |
$ | getInlineWordContent(…) | InlineWordContent |
$ | getWordTableRows(…) | WordTableRows |
$ | getReference(…) | FieldReference |
$ | getYesNo(…) | YesNo |
$ | getObject(…) | Object |
$ | getObjectCollection(…) | ObjectCollection |
Funktionen mit benannten Parameter
Manche Funktionen enthalten als zweiten Parameter ein Objekt mit einer kommagetrennten Liste von Key-Value-Pairs. Die Key-Value-Pairs nennen wir “benannte Parameter”.
Die Values der Key-Value-Pairs können jede Art von Strings sein. Dies beinhaltet:
Aufruf von Profildaten / Forms-Felder / Fields, siehe unten Key
nameFixtext, siehe unten Key
infoReferenzen auf Variabeln, siehe unten Key
function
Im folgenden Beispiel wird in einem Field Header eine globale Übersetzung vom Typ FormattedText zurückgegeben. Der Funktionsaufruf von getFormattedText erfodert die Id der globalen Übersetzung und als zweiten Parameter eine Liste von drei Key-Value-Pairs mit den Keys name, info und function.
<FormattedText Name="Header">
<Code>
function main(){
let myVariable = $("Forms.SignerMain.User.Function");
return $.translations.getFormattedText("FormattedTexts.FooterBoldWithParams", {
name: $("Forms.SignerMain.User.FirstName") + " " + $("SignerMainLastName"),
info: "Fixtext ist auch möglich",
function: myVariable
});
}
</Code>
</FormattedText>Funktionen im Detail pro API
Im Folgenden wird jede Funktion detailliert beschrieben:
Funktion | Zweck |
|---|---|
getText(String id) |
<Text Name="FirstName2"><!-- explizit -->
<Code>$.getText('Profile.User.FirstName')</Code>
</Text>
<Text Name="FirstName1"><!-- implizit -->
<Code>$('Profile.User.FirstName')</Code>
</Text> |
getDateAsText(String id) |
<Text Name="Date">
<Code>$.getDateAsText("Forms.Date")</Code>
</Text> |
joinNonEmpty(String separator, String item1, String item2, […]) |
Mehr Informationen hier: https://primesoft-group.atlassian.net/wiki/spaces/PD/pages/edit-v2/395444225#Funktion-joinNonEmpty() |
formatDate(Date date, String format) |
|
formatNumber(String number, String format) |
|
formatNumber(String number, Object options) |
$.formatNumber(11500.43243, { NumberDecimalDigits: 2, NumberGroupSeparator: $.translations.getText("Separator"), NumberDecimalSeparator: "-" });
// Result: 11*500-43 if Separator = * |
formatNumber(String number, String format, Object options) |
return $.formatNumber(11500.43243, "N2", { NumberDecimalDigits: 2, NumberGroupSeparator: "*", NumberDecimalSeparator: "-" });
// Result: 11*500-43 if Separator = * |
formattedText API
Funktion | Zweck |
|---|---|
formattedText.fromText(String text) |
Beispiel mit einem String: Beispiel mit Referenz auf ein Feld: |
formattedText.parse(String html, Object parameters) |
Beispiel ohne benannte Parameter: Beispiel mit benannten Parametern: |
formattedText.getBuilder() Siehe Kapitel Builder | Erstellt ein Builder-Objekt, um darauf aufbauend FormattedText oder Text mit der Funktion
|
wordContent API
Funktion | Zweck |
|---|---|
wordContent.fromFormattedText(FormattedText ft) |
|
PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland