Zum Hauptinhalt springen

Skript

info

Um das Skript Steuerelement nutzen zu können müssen Sie das entsprechende Feature in der Mandanten Administration aktivieren.

Das Skript Steuerelement führt JavaScript in einem Formular aus. Sie können auf diese Weise Werte berechnen, Daten dynamisch laden, Daten beim Speichern validieren etc.
Das Steuerelement wird den Nutzenden nicht angezeigt.

Konfiguration

Innerhalb der Konfiguration stehen folgende Optionen zur Verfügung:

  • Titel:
    Der Titel wird nicht angezeigt, und hilft Ihnen dabei das Skript Steuerelement wiederzufinden.
  • Externes Skript verwenden:
    Standardmäßig können Sie das Skript direkt in der Konfiguration angeben. Wenn Sie diese Option aktivieren, können Sie stattdessen ein Skript aus einer externen Quelle laden.
  • Inline Skript:
    Wenn Sie kein externes Skript nutzen, können Sie hier das Skript welches ausgeführt wird definieren. Details zur Skript API finden Sie unten.
    Über Platzhalter können Sie auch dynamische Werte einfügen.
  • Externe Skript Url:
    Wenn Sie ein externes Skript nutzen, können Sie hier die Url des Skripts angeben.

Platzhalter

Dieses Steuerelement stellt keine Platzhalter zur Verfügung.

Skript API

Folgende Einstiegspunkte stehen Ihnen zur Verfügung:

  • linqi.forms.addOnLoadEventHandler(callback: (formContext: FormContext) => void | Promise<void>)
    Diese Funktion erlaubt es Ihnen eine Callback Funktion einzufügen die ausgeführt wird, wenn das Formular geladen wurde.
    Die Callback Funktion erhält dabei den FormContext (s.u.) als Parameter. Über diesen können Sie mit den verschiedenen Steuerelementen und Bereichen interagieren.
  • linqi.forms.removeOnLoadEventHandler(callback: (formContext: FormContext) => void | Promise<void>)
    Diese Funktion entfernt eine Callback Funktion die beim Laden ausgeführt wird.
  • linqi.forms.addOnSaveEventHandler(callback: (formContext: FormContext, event: FormSaveEvent) => void | Promise<void>)
    Diese Funktion erlaubt es Ihnen eine Callback Funktion einzufügen die ausgeführt wird bevor das Formular gespeichert wird. Die Callback Funktion erhält dabei den FormContext (s.u.) als Parameter. Über diesen können Sie mit den verschiedenen Steuerelementen und Bereichen interagieren.
    Zusätzlich wird ein SaveEvent übergeben. Wenn Sie die Eigenschaft cancel auf true setzen, wird der Speichervorgang nicht durchgeführt.
  • linqi.forms.removeOnSaveEventHandler(callback: (formContext: FormContext, event: FormSaveEvent) => void | Promise<void>)
    Diese Funktion entfernt eine Callback Funktion die vor dem Speichern ausgeführt wird.
  • linqi.forms.addOnPostSaveEventHandler(callback: (formContext: FormContext) => void | Promise<void>)
    Diese Funktion erlaubt es Ihnen eine Callback Funktion einzufügen die ausgeführt wird nachdem das Formular gespeichert wurde. Die Callback Funktion erhält dabei den FormContext (s.u.) als Parameter. Über diesen können Sie mit den verschiedenen Steuerelementen und Bereichen interagieren.
  • linqi.forms.removeOnPostSaveEventHandler(callback: (formContext: FormContext) => void | Promise<void>)
    Diese Funktion entfernt eine Callback Funktion die nach dem Speichern ausgeführt wird.
  • linqi.forms.addOnNextStepEventHandler(callback: (formContext: FormContext, event: FormNextStepEvent) => void | Promise<void>)
    Diese Funktion erlaubt es Ihnen eine Callback Funktion einzufügen die ausgeführt wird bevor der Prozess in einen nächsten Schritt überführt wird. Die Callback Funktion erhält dabei den FormContext (s.u.) als Parameter. Über diesen können Sie mit den verschiedenen Steuerelementen und Bereichen interagieren.
    Zusätzlich wird ein FormNextStepEvent übergeben. Wenn Sie die Eigenschaft cancel auf true setzen, wird der Prozess nicht in den nächsten Schritt überführt. Zusätzlich hat der Event eine Eigenschaft buttonId die die Id des geklickten Button als Wert beinhaltet.
  • linqi.forms.removeOnNextStepEventHandler(callback: (formContext: FormContext, event: FormNextStepEvent) => void | Promise<void>)
    Diese Funktion entfernt eine Callback Funktion die ausgeführt wird bevor der Prozess in ienen nächsten Schritt wechselt.

FormContext

Die FormContext Klasse ist das Hauptobjekt mit dem Sie mit einem Formular interagieren. Ein FormContext Objekt hat folgende Methoden:

  • getSection(internalName: string): FormContextSection | null
    Diese Funktion fragt einen Bereich anhand des internen Namens ab. Wurde der Bereich nicht gefunden wird null zurückgegeben.
    Hinweis: Um Skripte möglichst stabil zu halten ist es nur möglich Bereiche über einen internen Namen abzufragen. Ein Bereich der keinen internen Namen hat, kann nicht abgefragt werden.
  • getSectionById(id: string): FormContextSection | null
    Diese Funktion fragt einen Bereich anhand der Id ab. Wurde der Bereich nicht gefunden wird null zurückgegeben.
  • getControl(internalName: string): FormContextControl | null
    Diese Funktion fragt ein Steuerelemnt anhand des internen Namens ab. Wurde das Steuerelement nicht gefunden wird null zurückgegeben.
    Hinweis: Um Skripte möglichst stabil zu halten ist es nur möglich Steuerelemente über einen internen Namen abzufragen. Ein Steuerelement das keinen internen Namen hat, kann nicht abgefragt werden.
  • getControlById(id: string): FormContextControl | null
    Diese Funktion fragt ein Steuerelement anhand der Id ab. Wurde das Steuerelement nicht gefunden wird null zurückgegeben.
  • showInformation(message: string): void
    Diese Funktion zeigt ein Informations Banner an der oberen Seite des Formulars an.
  • showWarning(message: string): void
    Diese Funktion zeigt ein Warnungs Banner an der oberen Seite des Formulars an.
  • showError(message: string): void
    Diese Funktion zeigt ein Fehler Banner an der oberen Seite des Formulars an.
  • showSuccess(message: string): void
    Diese Funktion zeigt ein Erfolgs Banner an der oberen Seite des Formulars an.
  • save(): void
    Diese Funktion speichert das Formular.
  • moveToNextStep(buttonId: string, disableMandatoryCheck: boolean): void
    Diese Funktion überführt den Prozess in den nächsten Schritt. Dabei müssen Sie als buttonId die Id des "geklickten" Button angeben. Sie können diese über die getControl Funktion ermitteln.
    Wenn Sie disableMandatoryCheck auf true setzen werden Pflichtfelder nicht geprüft.

FormContextSection

Diese Klasse repräsentiert einen Bereich im Formular. Diese Klasse hat folgende Methoden:

  • isHidden(): boolean
    Diese Funktion gibt zurück ob der Bereich versteckt ist oder nicht.
  • setHidden(hidden: boolean): void
    Legt fest ob der Bereich versteckt ist oder nicht.

FormContextControl

Diese Klasse repräsentiert ein Steuerelement im Formular. Diese Klasse hat folgende Methoden:

  • getId(): string
    Gibt die Id des Steuerelements zurück.
  • getValue(): any
    Gibt den aktuellen Wert des Steuerelements zurück. Der Datentyp ist dabei je nach Steuerelement unterschiedlich.
  • setValue(value: any)
    Legt den neuen Wert des Steuerelements fest. Der Datentyp wird dabei nach Möglichkeit in den Datentyp des Steuerelements konvertiert.
  • addOnChangeEventHandler(callback: (formContext: FormContext, value: any) => void)
    Fügt eine Callback Funktion ein die aufgerufen wird, wenn sich der Wert des Steuerelements ändert.
    Als Parameter wird der FormContext als auch der neue Wert übergeben.
  • isHidden(): boolean
    Gibt zurück, ob das Steuerelement versteckt ist.
  • setHidden(isHidden: boolean)
    Legt fest, ob das Steuerelement versteckt ist.
  • isMandatory(): boolean
    Gibt zurück, ob das Steuerelement ein Pflichtfeld ist.
  • setMandatory(mandatory: boolean)
    Legt fest, ob das Steuerelement ein Pflichtfeld ist.
  • isReadonly(): boolean
    Gibt zurück, ob das Steuerelement schreibgeschützt ist.
  • setReadonly(readonly: boolean)
    Legt fest, ob das Steuerelement schreibgeschützt ist.
  • saveIfReadonly(): boolean | null
    Gibt zurück, ob das Steuerelement auch gespeichert wird, wenn es schreibgeschützt ist. Wenn kein Wert festgelegt wurde wird null zurückgegeben.
  • setSaveIfReadonly(readonly: boolean)
    Standardmäßig werden Steuerelement die schreigeschützt sind nicht gespeichert. Über diese Funktion können Sie festlegen, ob das Steuerelement auch gespeichert wird, wenn es schreibgeschützt ist.

Beispielskript

linqi.forms.addOnLoadEventHandler(function(formContext) {
formContext.getControl("ScriptControl").addOnChangeEventHandler(function(fc, val) {
formContext.getControl("TargetUpdate").setValue("COPY " + val);
});
});

linqi.forms.addOnSaveEventHandler(function(formContext, saveEvent) {
var val = formContext.getControl("ScriptControl").getValue();
   if(val == "Invalid") {
formContext.showWarning("Geben Sie nicht Invalid ein.");
saveEvent.cancel = true;
}
});