Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum.composite.form
Dieses Widget bietet alle Basisfunktionen einer form:
Das folgende Beispiel erstellt eine Maske mit zwei Eingabefeldern:
let aguila = require('common/aguila'); let form = aguila.create({ width: 300, height: 300, type: 'agorum.composite.form.basic', name: 'basicForm', elements: [ { type: 'agorum.composite.form.element.text', name: 'textField1', label: 'Text 1' }, { type: 'agorum.composite.form.element.text', name: 'textField2', label: 'Text 2' } ] }); form;
let aguila = require('common/aguila'); let form = aguila.create({ width: 300, height: 300, type: 'agorum.composite.form.basic', name: 'basicForm', elements: [ { type: 'agorum.composite.form.element.text', name: 'textField1', label: 'Text 1' }, { type: 'agorum.composite.form.element.text', name: 'textField2', label: 'Text 2' } ], readOnly: false, validation: [ { required: true } ], value: { textField1: 'Wert 1', textField2: 'Wert 2' }, showError: 'always', error: { textField1: 'Error darstellen für textField1' } }); form;
let aguila = require('common/aguila'); let form = aguila.create({ width: 300, height: 300, type: 'agorum.composite.form.basic', name: 'basicForm', labelPosition: 'left', labelType: 'icon', elements: [ { type: 'agorum.composite.form.element.text', name: 'textField1', label: 'Text 1', labelIcon: 'ionicon:beer-outline;color=DimGray', readOnly: null, value: 'Wert 1', placeholder: 'Bitte einen Text eingeben', error: 'Eine Fehlermeldung', validation: [ { required: true, }, ], }, { type: 'agorum.composite.form.element.text', name: 'textField2', label: 'Text 2', labelIcon: 'ionicon:stopwatch-outline;color=DimGray', value: 'Wert 2', placeholder: 'Bitte einen Text eingeben', error: 'Eine Fehlermeldung', validation: [ { required: true, }, ], }, ], }); form;
Definiert den Typ und lautet immer agorum.composite.form.basic.
Definiert einen eindeutigen Namen für diese form.
Wert | Beschreibung |
---|---|
true | Übernimmt KEINE Form Element-Definitionen aus der Metadaten-Definition, wenn der Name eines Elements mit dem Namen eines definierten Metadatums übereinstimmt. |
false (Standard) | Übernimmt Form Element-Definitionen aus der Metadaten-Definition, wenn der Name eines Elements mit dem Namen eines definierten Metadatums übereinstimmt. |
Dieser Parameter können Sie auch auf Element-Ebene definieren.
Definiert optional die Breite der jeweiligen Labels der in dieser form enthaltenen elements.
Sie können diesen Parameter nachträglich ändern.
Beispiel
form.labelWidth = 150; // Standard: 100
Definiert die Position des Labels.
Sie können diesen Parameter nachträglich ändern.
Wert | Beschreibung |
---|---|
left (Standard) | Das Label ist links vom Feld. |
top | Das Label ist über dem Feld. |
Hinweis: Wenn Sie labelPosition auf Element-Ebene definieren möchten, dürfen Sie auf form-Ebene kein labelPosition setzen, weil das System labelPosition auf Element-Ebene mit der Einstellung der form überschreibt.
Beispiel
form.labelPosition = 'top';
Definiert den Typ des Labels.
Sie können diesen Parameter nachträglich ändern.
Wert | Beschreibung |
---|---|
text (Standard) | Das Label erscheint als Text. Die Eigenschaft label wird als der Text angezeigt. |
icon | Das Label erscheint als Icon. Die Eigenschaft labelIcon wird als Icon angezeigt und die Eigenschaft label als Tooltip. |
Hinweis: Wenn Sie labelPosition auf Element-Ebene definieren möchten, dürfen Sie auf form-Ebene kein labelPosition setzen, weil das System labelPosition auf Element-Ebene mit der Einstellung der form überschreibt.
Beispiel
form.labelType = 'icon';
Definiert ein Array von Elementen, die das System in dieser form verwendet.
Beispiel
Ein Element kann auch nur aus dem Namen eines Metadatums bestehen. Dann ermittelt agorum.composite.form automatisch alle Parameter aus der Metadaten-Definition zur korrekten Darstellung des Felds:
let aguila = require('common/aguila'); let form = aguila.create({ width: 300, height: 300, type: 'agorum.composite.form.basic', name: 'basicForm', elements: [ { name: 'ag_tags' }, { name: 'user_ag_tags' } ] }); form;
Sie können diesen Parameter nachträglich ändern.
form.elements = [ { name: 'ag_tags' } ];
Wert | Beschreibung |
---|---|
true | Der Ansichtsmodus erscheint. |
false (Standard) | Der Bearbeitungsmodus erscheint. |
Hinweis: Wenn Sie readOnly auf Element-Ebene definieren wollen, dürfen Sie auf form-Ebene kein readOnly setzen, weil das System readOnly sonst auf Element-Ebene mit der Einstellung der form überschreibt.
Beispiel
form.readOnly = true; // Ansichtsmodus einschalten
Enthält ein Array von Validierungsdefinitionen für alle Elemente in dieser form.
Beispiel
form.validation = [ { required: true } ];
Definiert eine Map von Werten zum Setzen und Auslesen der Werte der einzelnen Elemente in der form.
Sie können diesen Parameter nachträglich ändern.
Beispiel
form.value = { ag_tags: [ 'Tag 1', 'Tag 2' ] };
Steuert das Anzeigeverhalten von Fehlermeldungen bei den einzelnen Elementen.
Sie können diesen Parameter nachträglich ändern.
Wert | Beschreibung |
---|---|
deferred (Standard) | Zeigt die Fehlermeldung erst, wenn der Benutzer etwas ändert und die Validierung daraufhin fehlschlägt. |
always | Zeigt die Fehlermeldung sofort an, wenn die Validierung fehlschlägt. |
never | Zeigt keine Fehlermeldung an. |
Beispiel
form.showError = 'always';
Setzt eigene Fehlermeldungen an die jeweiligen Elemente, etwa wenn ein Skript eine Validierung durchführt.
Beispiel
form.on('valueChanged', () => { if (form.value.textField1 && !form.value.textField1.startsWith('a')) { form.error = { textField1: 'Der Text muss mit einem a beginnen' }; } else { form.error = {}; } });
Dieses Beispiel prüft bei Änderung der Werte in der form, ob das Feld textField1 mit einem a beginnt. Wenn nicht, setzt das System eine Fehlermeldung auf das Feld.
Hinweis: das Setzen eines errors zeigt nicht sofort einen Fehler an. Dieser verändert lediglich den Parameter valid. Soll direkt der Fehler erscheinen, setzen Sie showError etwa auf always.
Deaktiviert alle Elemente dieser form.
Beispiel
form.disabled = true;
Wert | Beschreibung |
---|---|
true | Alle Felder sind gültig. |
false | Ein oder mehrere Felder sind ungültig. |
Verwenden Sie diesen Parameter, um zu prüfen, ob alle Eingaben korrekt sind, bevor ein Benutzer Eingaben in einer Oberfläche speichert.
Löst aus, wenn das System ein Element der form fokussiert.
{ name: 'name des elements', path: [ 'name-des-haupt-elements', 'weitere untergeordnete', 'name-des-elements' ] }
Parameter | Beschreibung |
---|---|
name | Definiert den Namen des ursprünglich auslösenden Elements. |
path | Definiert den gesamten Pfad zu dem auslösenden Element als Array aus Sicht der form. |
Beispiel
form.on('focused', info => { console.log('focused', info); });
Beispiel bei einem list-element mit der Spalte „col1“
Das list-element selbst trägt den Namen list1:
{ name: 'col1', index: 0, path: [ 'list1', 0, 'col1' ] }
In der Liste list1 wurde die 1te Zeile (0) in der Spalte col1 fokussiert (selbige Struktur gilt auf für die nachfolgenden Events blurred und action).
Löst aus, wenn das System ein Element der form defokussiert.
Beispiel
form.on('blurred', info => { console.log('blurred', info); });
Löst aus, wenn ein Benutzer das Element button oder menuItem der form aklickt.
Löst aus, wenn eine Eingabe erfolgt und sich dadurch der Status von valid ändert.
Löst aus, wenn sich ein oder mehrere Werte der form-Elemente ändern.
Löst aus, wenn ein Benutzer einen Wert in einem Feld ändert. Dieses Event ist einfacher zu verwenden als valueChanged.
Das System übergibt als Parameter eine Struktur mit den Informationen, was sich geändert hat.
Beispiel
Als Parameter übergibt das System diese Struktur:
{ value: 'current value', // aktueller Wert des Felds oldValue: 'previous value', // Wert vor der Änderung name: 'name-of-element', // Name des auslösenden Elements }
Der Inhalt dieser Struktur kann je nach verwendetem Element variieren. Etwa gibt das Element list hier noch weitere Informationen mit.
Löst aus, wenn ein Benutzer einen Wert in einem Feld ändert und das Feld verlässt.
Beispiel
Als Parameter übergibt das System diese Struktur:
{ value: 'current value', // aktueller Wert des Felds name: 'name-of-element', // Name des auslösenden Elements }
Der Inhalt dieser Struktur kann je nach verwendetem Element variieren. Etwa gibt das Element list hier noch weitere Informationen mit.
Löst aus, wenn sich elements ändert.
Das System übergibt den neuen Wert von elements, also eine Liste der neuen elements.
Löst aus, wenn eine Änderung im Bearbeitungs-/ oder Ansichtsmodus stattfindet.
Das System übergibt als Parameter den neuen Wert von readOnly.
Löst aus, wenn sich der Parameter labelWidth ändert.
Das System übergibt als Parameter den neuen Wert von labelWidth.
Löst aus, wenn sich die validation-Definition ändert.
Das System übergibt als Parameter den neuen Wert von validation.
Löst aus, wenn sich der Parameter showError ändert.
Das System übergibt als Parameter den neuen Wert von showError.
Löst aus, wenn sich der Parameter error ändert.
Das System übergibt als Parameter den neuen Wert von error.
Fokussiert das angegebene Element.
Das System fokussiert das erste Element der form, wenn Sie kein Element angeben.
Beispiel
// erstes element form.fire('focus'); // oder mit element form.fire('focus', 'name-des-elements');
Führt eine Validierung aller darunterliegenden Elemente durch, gibt das Ergebnis true oder false zurück und stellt eventuell aufgetretene Fehler einmalig visuell dar, unabhängig von der aktuell gesetzten Einstellung showError.
Gibt den internen Zustand aller Elemente innerhalb dieser form zurück.
Sie debuggen damit, welche Felder innerhalb der form welchen Zustand besitzen, etwa wann welche Felder dazu führen, dass eine form nicht valide ist.
Beispiel
console.log(form.dump());
Fasst mehrere set()-Aufrufe zusammen, um die Anzahl der dadurch ausgelösten Ereignisse zu minimieren und die Performance zu verbessern, etwa bei der Verwendung von list-Elementen, da dort die Änderungen an größeren Mengen von Unterelementen (etwa einer oder mehrerer Spalten einer langen Liste) häufiger ist als bei anderen Elementen.
Beispiel
form.batch(() => { // Wert eines einzelnen text-Elements aktualisieren form.set('textElement', 'someValue'); // Werte einer gesamten list-Spalte aktualisieren let numRows = form.get('listElement.value').length; for (let i = 0; i < numRows; ++i) { form.set([ 'listElement', i, 'someColumn', 'value' ], 'someOtherValue'); } });