Widget-Plugin: Berechnungselement


Das Symbol für Widgets vom Typ Berechnungselement im Xima® Formcycle-Designer.

Plugin-Download

Funktionsbeschreibung

Das Plugin stellt ein neues Widget im Designer zur Verfügung, welches es erlaubt, auf einfache Art Mathematische Berechnungen auszuführen. Das Widget erzeugt ein gesperrtes Eingabefeld, welches zur Ausgabe des Ergebnisses dient. In den Eigenschaften dieses Eingabefelds, kann eine Formel mit Feldplatzhaltern wie z.B. ([%tf1%] + [%tf2%]) / 1.19 eingegeben werden. Zusätzlich können Schriftfarbe und Ausgabeformat für das Ergebnis festgelegt werden. 

Installation

Das Plugin kann als Mandant-Plugin oder System-Plugin installiert werden. Eine Anleitung zur Installation von Plugins finden Sie hier.

Konfiguration

An Widgets dieses Typs können die folgenden Eigenschaften konfiguriert werden:

Grundeigenschaften

Basiseinstellungen für Grundeigenschaften

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Grundeigenschaften.

Darstellung

Basiseinstellungen für Darstellung

Zusätzlich hat dieses Formularelement noch folgende Eigenschaften im Bereich Darstellung.

Mögliche Eigenenschaften und deren Standardwerte, nachdem die Option Ausgabeformat angewählt wurde und das Ergebnis dieser Konfiguration im Formular.

Konfigurationsmöglichkeiten für der Schriftfarbe, nachdem die Option Farbänderung angewählt wurde.
NameBeschreibung
AusgabeformatDurch Anwählen dieser Option kann die Ausgabe (wenn es sich um eine Zahl handelt) mit Eigenschaften aus der Autonumeric-Javascript-Bibliothek formatiert werden. Wenn diese Option gewählt ist, werden die Eigenschaften Ausrichtung der Einheit, Dezimalstellen, Tausendertrennzeichen, Dezimaltrennzeichen und Einheit konfigurierbar.
Ausrichtung der EinheitLegt die Position der Einheit fest. Es kann zwischen Rechts vom Wert und Links vom Wert gewählt werden. Nur sichtbar, wenn die Option Ausgabeformat angewählt wurde.
DezimalstellenAnzahl der Nachkommastellen, die immer sichtbar sind. Wenn dieses Feld sichtbar ist, muss es zwingend befüllt werden, da das Berechnungs-Widget ansonsten funktionsunfähig ist. Nur sichtbar, wenn die Option Ausgabeformat angewählt wurde. Standardwert: 2
TausendertrennzeichenOptionales Zeichen, welches bei der Ausgabe der Zahlenwerte zwischen Tausenderstellen eingefügt wird. Nur sichtbar, wenn die Option Ausgabeformat angewählt wurde. Standardwert: .
DezimaltrennzeichenZeichen, welches bei der Ausgabe der Zahlenwerte zwischen Vor- und Nachkommastellen eingefügt wird. Wenn dieses Feld sichtbar ist, muss es zwingend befüllt werden, da das Berechnungs-Widget ansonsten funktionsunfähig ist. Nur sichtbar, wenn die Option Ausgabeformat angewählt wurde. Standardwert: ,
EinheitOptionales Zeichen bzw. optionale Zwischenkette, welche zusätzlich zum Wert im Feld angezeigt wird. Die Position kann mir der Eigenschaft Ausrichtung der Einheit festgelegt werden. Nur sichtbar, wenn die Option Ausgabeformat angewählt wurde. 
FarbänderungDas Anwählen dieser Option erlaubt es, die Schriftfarbe für positive und negative Zahlen festzulegen. Wenn diese Option gewählt ist, werden die Eigenschaften Positive Farbe und Negative Farbe konfigurierbar. Für Zahlenwerte, welche Null entsprechen und Texte erfolgt keine Farbänderung.
Positive FarbeÜber eine vorgegebene Auswahl von Farben oder einen Colorpicker kann hier die Farbe bestimmt werden, mit der der im Feld sichtbare wert angezeigt werden soll, wenn es sich um eine positive Zahl handelt. Nur sichtbar, wenn die Option Farbänderung angewählt wurde.
Negative FarbeÜber eine vorgegebene Auswahl von Farben oder einen Colorpicker kann hier die Farbe bestimmt werden, mit der der im Feld sichtbare wert angezeigt werden soll, wenn es sich um eine negative Zahl handelt. Nur sichtbar, wenn die Option Farbänderung angewählt wurde.

Label

Basiseinstellungen für Label

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Label.

Berechnung

Die in diesem Bereich vorhandenen Eigenschaften dienen dazu, die Art der Berechnung und die für die Berechnung zu verwendende Formel festzulegen.

Beispiel für die Berechnungsformel für eine Verkettung von Strings der Eingabefelder tf1 und tf2 und das Ergebnis im Formular.

Beispiel für eine Berechnung eines Feldes, welches sich weiter oben im Formular befindet als die Berechnungsfelder, auf deren Wert es zugreift. Durch das Vergeben eines Wertes bei Reihenfolge Index am Berechnungs-Widget der Teilsummen, werden diese zuerst berechnet und erst danach wird die Gesamtsumme ermittelt.
NameBeschreibung
BerechnungsfeldIn dieses nicht mit einem Label benannte Feld kann ein Berechnungsformel eingegeben werden, welche bei jeder Wertänderung von einem der in der Berechnungsformel verwendeten Eingabelemente erneut ausgeführt wird.
Als Syntax wird JavaScript verwendet. Für das Ermitteln der zu verwendenden Werte von anderen Eingabelementen können neben jQuery-Selektoren auch Xima® Formcycle Platzhalter verwendet werden.
FeldwerteHier kann ausgewählt werden, mit welchem Datentypen die Feldwerte behandelt werden sollen. Entwerder soll für jeden Feldwert automatisch ermittelt, welcher Datentyp der er hat oder es sollen alle Feldwerte als Text gelesen werden. Letzteres ist zum Verketten von Strings sinnvoll. Jedoch sind damit Berechnungen (z.B. [%tf1%] - [%tf2%]) ausgeschlossen.
Leere FelderHier kann ausgewählt werden, was passieren soll, wenn ein Formularelement keinen Wert hat. Entweder wird es wie die Zahl 0 behandlelt oder wie leerer Text. Bei nummerischen Berechnungen sollte der Wert in der Regel wie die Zahl 0 behandelt werden.
Reihenfolge IndexDiese Option ist nur in Ausnahmefällen notwendig. Standardmäßig werden die Felder automatisch in der Reihenfolge abgearbeitet, wie es die Formeln vorgeben. Falls die automatisch erkannte Reihenfolge einmal nicht korrekt sein sollte, kann eine Indexzahl vergeben werden. Wenn in wenigstens einem Formelfeld ein Index gesetzt ist, ist die Reihenfolge der Abarbeitung wie folgt: Zuerst werden alle Berechnungenfelder mit einem Index abgearbeitet, wobei vom niedrigsten Indexwert zum größten Indexwert vorgegangen wird. Anschließend werden alle Berechnungen ohne einen Index ausgeführt, entsprechend den normalen Regeln (von oben nach unten und von links nach rechts).

Bedingungen

Basiseinstellungen für Bedingungen

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Bedingungen.

Hilfe

Basiseinstellungen für Hilfe

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Hilfe.

CSS-Klassen

Basiseinstellungen für CSS-Klassen

Dieses Element hat keine zusätzlichen Einstellungen im Bereich CSS-Klassen.

Attribute

Basiseinstellungen für Attribute

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Attribute.

Verfügbar wenn

Basiseinstellungen für Verfügbar wenn

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Verfügbar wenn.

Sonstiges

Basiseinstellungen für Sonstiges

Dieses Element hat keine zusätzlichen Einstellungen im Bereich Sonstiges.

Druckbild im Word-/PDF-Export

Wenn ein Formular per Word-/PDF-Export exportiert wird, sieht das Widget wie ein normales, auf Readonly geschaltetes, Eingabefeld aus.

Formelbeispiele

FormelErklärung
[%tf1%] - [%tf2%]

$('[name=tf1]').val() - $('[name=tf2]').val()
Subtraktion der Werte in den Eingabefeldern tf1 und tf2 einmal unter Verwendung von Passwörtern und einmal mittels jQuery-Selektoren
[%tf2%] * (1 + ([%tf1%] / 100))Wird in tf1 z.B. der Steuersatz und in tf2 der Nettobetrag eingegeben, wird der Bruttobetrag berechnet
[%tf1%] + " " + [%tf2%]Stringverkettung aus den Eingaben in den Eingabefeldern tf1 und tf2
[%tf1%].lengthAnzahl der eigegebenen Zeichen im Eingabefeld tf1
([%tf1%]<2) ? "Genehmigt" : "Abgelehnt"Wenn der Wert in tf1 kleiner als 2 ist, soll "Genehmigt" ausgegeben werden. Ansonsten "Abgelehnt".
$('[org_name=tf1]').sum()

$('[data-org-name=tf1]').sum()

(neue Schreibweise bei W3C konformen Modus)
Beispiel für Berechnen der Summe von wiederholten Elementen mit dem Namen tf1. Für wiederholte Elemente und Elemente innerhalb von wiederholten Containern und Fieldsets muss ein normaler JavaScript-Selektor oder wie in diesem Beispiel ein jQuery-Selektor verwendet werden.

Ein Demo-Beispiel zu den erwähnten Möglichkeiten finden Sie hier.

Mögliche CSS-Anpassungen

Um die Ausgabe zu formatieren, können per CSS Anpassungen vorgenommen werden. Wenn zum Beispiel die Ausgabe anstatt einem gesperrten Eingabefeld wie ein Text aussehen soll, kann folgender CSS-Code verwendet werden:

.CXFormula .label-top{
   display: none;
}
.XFormula{
   border: none !important;
   background: none !important;
   padding: 0;
}

Versionshistorie

2.3.1

  • Fix: Ungeklammerte Kommaausdrücke im JavaScript einer Formel werden nun unterstützt
  • Verbesserte Fehlermeldung in der Konsole, wenn eine Formel syntaktisch ungültig ist.

2.3.0

  • Feature: Es kann nun ausgewählt werden, ob die Datentypen der Feldwerte automatisch ermittelt werden sollen oder ob die Feldwerte immer als Text gelesen werden sollen. Bisher wurden sie immer automatisch ermittelt.

2.2.1

  • Verbesserung der Performance beim Auswerten der Formeln.

2.2.0

  • Erfordert mindestens Xima® Formcycle Version 7.2.0.
  • Auch nicht Formel-Platzhalter in der Formel werden ersetzt
  • Das Eingabfeld für die Formel passt sich in der Höhe automatisch seinem Inhalt an.
  • Das Eingabfeld für die Formel erlaubt die Eingabe von Zeilenumbrüchen.
  • Bei Änderungen des Werts eines Formelfelds wird das JQuery-Ereignis change ausgelöst.
  • Der this-Kontext innerhalb des Formel-JavaScript-Ausdrucks wird nun auf die JQuery-Instanz des Formelfelds gesetzt, dessen Formel evaluiert wird.

2.1.1

  • Fix: Formeln, welche von einem Element abhängen, welches über eine Bedingung versteckt oder gesperrt geschalten und geleert wird, aktualisieren sich, wenn die abängigen Elemente geleert werden.

2.1.0

  • Feature: Validationsattribute wie etwa Pflichtfeld, maximaler Wert und minimaler Wert sind nun auch am Berechnungsfeld verfügbar. Damit kann etwa einfach geprüft werden, ob die Summe von Elementen einen bestimmten Wert nicht überschreitet.

2.0.9

  • Fix: Beim Auführen einer Formel wird das Symbol "$" and "xm_jq()" gebunden, wenn verfügbar. Dies vermeidet Probleme, wenn das Formular in einer Drittseite eingebettet ist und die Drittseite das global "$" anders definiert.

2.0.8

  • Fix: Es wird "xm_jq()" verwendet, wenn verfügbar. Dies behebt Problem bei der Einbindung in Drittseiten, wenn die Drittseite eine andere JQuery-Bibliothek lädt.

2.0.7

  • Change: Verhalten für Checkbox-Elemente geändert: Bei Nutzung von Platzhalter ist Wert nun der am Element hinterlegte Werte (z.B. on), statt immer 0 oder 1.
  • Change: Für Auswahlelemente mit der Darstellung "Radiobutton" ist bei Nutzung von Platzhaltern der Wert nun der Wert der ausgewählten Option, nicht mehr die Anzahl der ausgewählten Optionen.
  • Change: Für Auswahlelemente mit der Darstellung "Checkbox" ist bei Nutzung von Platzhaltern der Wert nun die Summe der Werte aller ausgewählten Optionen (falls alle Werte nummerisch sind) oder die String-Konkatenation der Werte aller ausgewählten Optionen (wenn nicht alle Werte nummerisch sind), nicht mehr die Anzahl der ausgewählten Optionen.

2.0.6

  • Fix: Titel- und Platzhalter-Attribute werden korrekt kodiert, wenn das Berechnungsfeld erzeugt wird.

2.0.5

  • Performanz beim Auswerten von Formeln verbessert

2.0.4

  • Feature: Platzhalterauswahl im Editor hinzugefügt.

2.0.3

  • Fix: Kleinere Darstellungsfehler behoben

2.0.2

  • Feature: Berechnungsfelder können nun initial gesperrt und als Mussfeld geschalten werden.
  • Fix: XSS-Angriffe verhindern
  • Fix: Abarbeitungsreihenfolge der Berechnungsfelder angepasst, sodass nun problemlos in der Formel eines Berechnungsfeldes, Platzhalter für andere Berechnungselemente genutzt werden können.

2.0.1

  • Attribut data-name hinzugefügt (W3C-Konformität)

2.0.0

  • Initialer Release für die Version 7