Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

Eigene Eingabefelder für Bedienoberflächen erstellen

Hinweis: Sobald Sie eigene Eingabefelder definieren, können Sie keine Metadaten mehr verwenden. Sie müssen also alle für diese Bedienoberflächen benötigten Eingabefelder definieren.

Über den Konfigurator können Sie eigene Eingabefelder für Bedienoberflächen erstellen.

Die Eingabefelder können Sie bei allen Masken definieren, die im agorum core smart assistant konfigurator möglich sind. Diese gelten für folgende Bereiche:

Für die weitere Verarbeitung der selbst definierten Eingabefelder wird genauso verfahren, wie beim Eingeben der Eingabefelder im Bereich Metadaten.

Allgemeines Vorgehen


Eingabefelder definieren Sie in der Registerkarte JavaScript (Initialisierung). Dazu definieren Sie im Rückgabewert der Registerkarte das Array _fields, das die Beschreibung der Eingabefelder enthält.

Aufbau des Arrays „_fields“ in der Registerkarte „JavaScript (Initialisierung)“

Das Array _fields kann aus beliebig vielen JavaScript-Objekten bestehen. Diese Objekte sind wie folgt aufgebaut:

Objekt Erklärung

name

Definiert den internen Namen des Eingabefeldes, mit dem das Eingabefeld wieder ausgelesen werden kann.

displayName

Definiert den Text (oder den Textkey zum Übersetzen), der vor dem Eingabefeld ausgegeben wird.

readOnly

true
Aktiviert Nur lesen.

false
Deaktiviert Nur lesen.

restricted

true
Aktiviert die Einschränkung auf Werte aus der Datenquelle.

false
Deaktiviert die Einschränkung auf Werte aus der Datenquelle.

optional

true
Markiert das Feld als optional.

false
Markiert das Feld als Pflicht.

displayType

Definiert eine Spezifikationsmöglichkeit des Anzeigetyps des Metadatums.

Mögliche Werte

• default
• dataSource – Anzeige als Drop-down
• textArea – Mehrzeilige Eingabe

dataSource

Verweist auf die dataSource in der MetaDb.

dataParameters: {}

Übergabe der Parameter an dataSource.

Beispiele


Hinweis: Die folgenden Skripte dienen als Beispiele und dürfen nicht kopiert werden, da zum Teil vordefinierte Metadaten oder Objekte verwendet werden.

Beispiel: JavaScript-Objekt, das ein Eingabefeld beschreibt

    {
      name: 'name',
      readOnly: true,
      displayName: 'Dateiname',      
    }

Beispiel mit Schaltflächen, Eingabefelder und Belegung der Eingabefelder

/* global sessionController, sessionControllerAdmin, folder, objects */

let beans = require('common/beans');

({
  // Vorbelegung der Eingabefelder
  name: objects[0].name,
  description: objects[0].description,
  acmf_dokumentType: beans.get(objects[0],'~acmf_dokumentType'),

  // Definition der Eingabefelder
  _fields: [
    {
      name: 'name',
      readOnly: true,
      displayName: 'Dateiname',      
    },
    'description',
    'acmf_dokumentType'
  ],

  // Definition der Buttons
  _buttons: [
    {
      name: 'prev',
      text: 'zurück',
      defaultButton: true
    },
    {
      name: 'next',
      text: 'Weiter',
    }
  ]
});

Beispiel: Array „_fields“, mit dem drei Eingabefelder definiert werden

/* global sessionController, sessionControllerAdmin, folder, objects */

// Rückgabewert von JavaScript (Initialisierung) im gleichnamigen JavaScript
({
  _fields: [
    {
      name: 'name',
      readOnly: true,
      displayName: 'Dateiname',      
    },
    'description',
    'acmf_dokumentType'
  ]
});

Abfrage der selbst definierten Eingabefelder in der Registerkarte „JavaScript“, „JavaScript (zuvor)“ oder „JavaScript (danach)“


Selbst definierte Eingabefelder werden genauso abgerufen wie die Eingabefelder, die durch Metadaten definiert werden.

Beispiel eines JavaScripts, das auf eine selbstdefinierte Schaltfläche und eigene Eingabefelder reagiert 

/* global sessionController, sessionControllerAdmin, folder, objects, data */

let object = objects[0];
let ret = [];

// hier werden die selbst definierten Eingabefelder wie normale Metadaten gespeichert
let metadata = require('filingassistant/metadata');
metadata(data).save(object);

ret.push('refresh:' + object);

switch (data._button) {
  case 'next':
    // Weiter
    // Hier wird auf das selbst definierte Eingabefeld 'acmf_dokumentType' verwendet
    // - gleich wie wenn dieses im Bereich "Metadaten" stehen würde.
    switch (data.acmf_dokumentType) {
      case 'Vertrag':
        ret.push('action:_Formular01_Vertrag:' + object);
        break;
    }
    break;
  case 'prev':
    // zurück
    break;
  default:
    break;
}

ret;

Beispiel für displayType = dataSource

/* global sessionController, sessionControllerAdmin, folder, objects */

({
  // Vorbelegen der Daten
  admin_b1: true,
  admin_b2: true,
  
  // Felder definieren
  _fields: [
    {
      name: 'acmf_testZeichenkette',
      displayName: 'Notiz',
    },
    {
      name: 'name',
      displayName: 'Auswahl',
      displayType: 'dataSource',
      dataSource: 'MAIN_MODULE_MANAGEMENT/customers/Musterfirma GmbH/data/acmf_demo_facet_auswahl_in_position',
      dataParameters: {
        objectId: objects[0]
      }
    },
    {
      name: 'acmf_testInteger',
      displayName: 'Auswahl Position',
      displayType: 'dataSource',
      dataSource: 'MAIN_MODULE_MANAGEMENT/customers/Musterfirma GmbH/data/acmf_demo_facet_auswahl_position',
      dataParameters: {
        objectId: objects[0]
      }
    },
    {
      name: 'admin_b1',
      displayName: 'Notiz schreiben',
    },
    {
      name: 'admin_b2',
      displayName: 'Stempel setzen',
    }

  ]
});

Unter dataSource ist folgender Pfad hinterlegt:

MAIN_MODULE_MANAGEMENT/customers/MusterfirmaGmbH/data/acmf_demo_facet_auswahl_in_position

Dort finden sich die folgenden MetaDb-Einträge:


class

agorum.api.object.data.JsDataHandler


Script.js

/* global query, parameters */

let objects = require('common/objects'),
    beans = require('common/beans');

let firstItem = beans.get(objects.find(parameters.objectId), '~_docform.origin.RgPosition[0]') || {};

let result = [];

for (var key in firstItem) {
  result.push({
    text: key,
    value: key
  });
}

result;