Code

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.

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 return Statement 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 in main definiert werden.

  • Das return Statement in main muss 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

<Code>$("Forms.Subject")</Code>

Field

<Code>$("Header")</Code>

Profil-Feld: Benutzer

<Code>$("Profile.User.FirstName")</Code>

Profil-Feld: Organisation

<Code>$("Profile.Org.Unit")</Code>

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

Field-Typ

Rückgabetyp

Text

String

FormattedText

FormattedText

WordContent

WordContent

InlineWordContent

InlineWordContent

WordTableRows

WordTableRows

Date

Date

YesNo

Boolean

Picture

Image (z. B. Profile.Org.Logo)

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

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

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:

  1. Aufruf von Profildaten / Forms-Felder / Fields, siehe unten Key name

  2. Fixtext, siehe unten Key info

  3. Referenzen 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

Funktion

Zweck

getText(String id)

  • Holt unformatierten Text via id explizit. Alternativ kann auch ein impliziter Aufruf getätigt werden (siehe Beispiel).

  • Parameter id: Feld-Id. Das Feld hinter Id muss ein String ausgeben.

  • Rückgabetyp: String

<Text Name="FirstName2"><!-- explizit --> <Code>$.getText('Profile.User.FirstName')</Code> </Text> <Text Name="FirstName1"><!-- implizit --> <Code>$('Profile.User.FirstName')</Code> </Text>

getDateAsText(String id)

  • Holt ein Datumsfeld mittels id und konvertiert es in unformatierten Text.

  • Parameter id: Feld-Id. Das Feld hinter Id muss ein Datum ausgeben.

  • Rückgabetyp: String

<Text Name="Date"> <Code>$.getDateAsText("Forms.Date")</Code> </Text>

joinNonEmpty(String separator, String item1, String item2, […])

  • Fügt die in der Liste aufgeführten items vom Typ String zusammen und trennt sie anschliessend mit dem separator.

  • Parameter separator: String. Zeichen, das als Separator zwischen allen Listenelementen agiert.

  • Parameter item1, item2 und ff.: alle Parameter nach separator bilden eine Liste von Strings, die hinter einander ausgegeben werden.

  • Rückgabetyp: String

$.joinNonEmpty(" / ", $('Profile.Org.Title'), $('Profile.Org.Unit')) Resultat: "Beispielfirma / Beispielabteilung"

Mehr Informationen hier: https://primesoft-group.atlassian.net/wiki/spaces/PD/pages/edit-v2/395444225#Funktion-joinNonEmpty()

formatDate(Date date, String format)

  • Passt das Format eines Datumsobjekts date an zum gewünschten format.

  • Parameter date: Datumsobjekt, entweder aus Datums-Forms-Feld, Datums-Field oder aus new Date().

  • Parameter format: String. Gibt das Datumsformat an gemäss dieser Liste: Custom date and time format strings - Microsoft Learn. Im Parameter kann auch eine globale Übersetzungen geholt werden.

  • Rückgabetyp: String

$.formatDate($("Forms.Date").Value, "yyyy-MM-dd")

formatNumber(String number, String format)

  • Wandelt den String an zum gewünschten format.

  • Parameter number: String, entweder aus Forms-Feld oder über native JavaScript Werte.

  • Parameter format: String. Gibt das Nummernformat an gemäss dieser Liste: Standard numeric format strings. Im Parameter kann auch eine globale Übersetzungen geholt werden.

  • Rückgabetyp: String

$.formatNumber($("Forms.Price"), "N2")

formatNumber(String number, Object options)

  • Formatiert den String unter Berücksichtigung benutzerdefinierter Optionen, welche sich an die .NET Implementierung der NumberFormatInfo richtet. Die Standardkultur-Einstellungen werden übersteuert.

  • Parameter number: String, entweder aus Forms-Feld oder über native JavaScript Werte.

  • Parameter options: Object. Es kann NumberDecimalDigits, NumberGroupSeparator und NumberDecimalSeparator angegeben werden. Es kann auch eine globale Übersetzung geholt werden.

  • Rückgabetyp: String

$.formatNumber(11500.43243, { NumberDecimalDigits: 2, NumberGroupSeparator: $.translations.getText("Separator"), NumberDecimalSeparator: "-" }); // Result: 11*500-43 if Separator = *

formatNumber(String number, String format, Object options)

  • Formatiert den String zum gewünschtem format unter Berücksichtigung benutzerdefinierter Optionen, welche sich an die .NET Implementierung der NumberFormatInfo richtet. Dies kann genutzt werden z.B. den NumberGroupSeparator explizit zu übersteuern, aber trotzdem die Zahl als Währung zu formatieren.

  • Parameter number: String, entweder aus Forms-Feld oder über native JavaScript Werte.

  • Parameter format: String. Gibt das Nummernformat an gemäss dieser Liste: Standard numeric format strings. Im Parameter kann auch eine globale Übersetzungen geholt werden.

  • Parameter options: Object. Es kann NumberDecimalDigits, NumberGroupSeparator und NumberDecimalSeparator angegeben werden. Es kann auch eine globale Übersetzung geholt werden.

  • Rückgabetyp: String

return $.formatNumber(11500.43243, "N2", { NumberDecimalDigits: 2, NumberGroupSeparator: "*", NumberDecimalSeparator: "-" }); // Result: 11*500-43 if Separator = *

formattedText API

Funktion

Zweck

Funktion

Zweck

formattedText.fromText(String text)

  • Konvertiert einen String zu einem FormattedText.

  • Parameter text: String oder Feld, das einen String zurückgibt.

  • Rückgabetyp: FormattedText

Beispiel mit einem String:
$.formattedText.fromText("Ein lustiger Satz.")

Beispiel mit Referenz auf ein Feld:
$.formattedText.fromText($("Forms.Subject"))

formattedText.parse(String html, Object parameters)

  • Baut aus den Argumenten einen FormattedText.

  • Parameter html: String, der die HTML-Definition des FormattedText und ggf. Platzhalter im Format {{placeholderName}} enthält.

  • Parameter parameters: Beschreibung aller Parameter, die als Platzhalter in html vorkommen.

  • Platzhalternamen innerhalb eines FormattedText müssen eindeutig.

  • Rückgabetyp: FormattedText

Beispiel ohne benannte Parameter:
$.formattedText.parse("<p data-word-style-id="Quote">Absatz in built-in 'Quote' Style</p>");

Beispiel mit benannten Parametern:
$.formattedText.parse("<p data-word-style-id="Quote">{{something}}</p>", { something: "Absatz in built-in 'Quote' Style" });

formattedText.getBuilder()

Siehe Kapitel Builder

Erstellt ein Builder-Objekt, um darauf aufbauend FormattedText oder Text mit der Funktion append() anzuhängen.

$.formattedText.getBuilder()

wordContent API

Funktion

Zweck

Funktion

Zweck

wordContent.fromFormattedText(FormattedText ft)

  • Konvertiert einen FormattedText zu einem WordContent.

PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland