Open Source Dokumentenmanagement
Dokumentation

Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core information center entwickeln


Filter auf Basis vorhandener Filter konfigurieren und erstellen

Diese Dokumentation zeigt, wie Sie auf Basis eines bereits vorhandenen Filters weitere Filter konfigurieren und zentral für alle oder einzelne Benutzer zur Verfügung stellen. Dabei aktualisieren sich die angepassten Filterkonfigurationen. Beim Erstellen von eigenen Filterkonfigurationen ohne Basis-Filter ist dies nicht möglich.

Im neuen Filter können Sie:

Als Basis-Filter stehen Ihnen alle Filter aus der Suche zur Verfügung.

Die dargestellten Werte in den folgenden Beispielen sind anpassbar und dienen lediglich als Orientierung.

Einen Filter erstellen und registrieren


Im ersten Schritt legen Sie einen Filter über ein Skript an, das in Ihrem Konfigurationsprojekt im Ordner js liegt. Anschließend registrieren Sie den Filter, damit er in der Suche erscheint und verwendbar ist.

  1. Erstellen Sie ein Konfigurationsprojekt oder öffnen Sie ein bestehendes.
  2. Öffnen Sie im Konfigurationsprojekt den Ordner js.
  3. Legen Sie im Ordner js über das Kontextmenü den Ordner acic an.
  4. Legen Sie im Ordner acic über das Kontextmenü eine JavaScript-Datei an.

    Hinweis: Bei der JavaScript-Datei handelt es sich um den Filter.

  5. Passen Sie die JavaScript-Datei mithilfe des unten aufgeführten JavaScript-Beispiels an.​​​​​​
  6. Speichern Sie die JavaScript-Datei.
  7. Registrieren Sie die JavaScript-Datei.

    Hinweis: In der Standardeinstellung stehen die Filter jedem Benutzer zur Verfügung. Individuelle Einstellungen passen Sie in der MetaDB über die Berechtigung des Filters an.

JavaScript-Beispiel


Verwenden Sie das folgende Skript, um den aus dem Beispiel konfigurierten Filter Eingang User (demo) nachzubilden.

/* jshint unused: true */

let objects = require('common/objects');
// Die Zeile wird immer genommen und NIEMALS geändert
let acicInbox = require('/agorum/roi/customers/inbox/js/acic/inbox');

exports.settings = user => {

  let demoUserId = objects.find('user:demo').ID;

  let customInbox = acicInbox.settings(user).find(item => item.name === 'inbox-all');
  customInbox.name = 'custom-inbox-demo-user';  // Eindeutiger Name
  customInbox.text = 'Eingang User (demo)';
  // customInbox.listType = 'explorer';
  // customInbox.listConfig = 'Standard';
  customInbox.sort = [
    {
      property: 'updateDate',
      direction: 'DESC'
    }
  ];

  customInbox.filter = customInbox.filter.filter(f => f.name !== 'objectTypes');

  customInbox.filterSelection = {
    inbox_forOtherCount: {
      value: true,
      valueNot: false,
      subQuery: {
        otherUser: {
          value: [
            demoUserId
          ],
          valueDisplay: [
            demoUserId
          ],
          count: 1
        },
        otherUserFromDate: {
          value: [
            null
          ],
          valueDisplay: [
            null
          ],
          count: 1
        }
      }
    }
  }; 
  return [ 
    customInbox
  ];
};

Parameter


acicInbox

Definiert den Pfad zum Registrierungsskript des gewünschten Filters.

  1. Verwenden Sie den Search query builder, um den selectedSettingName des Filters herauszufinden (Name des Filters).
  2. Geben Sie den Namen des Filters ein und wählen Sie die Datei, die im Ordner acic liegt. 

Das folgende Beispiel gibt den Pfad zum Skript der Eingangs-Filter an:

let acicInbox = require('/agorum/roi/customers/inbox/js/acic/inbox');


demoUserID

Sucht den Benutzer anhand des Benutzernamens.

let demoUserId = objects.tryFind('user:demo').ID;


customInbox

Wählt aus dem in acicInbox erwähnten Registrierungsskript die entsprechende Filterkonfiguration, die das System als Basis für den neuen Filter verwendet.

In folgendem Beispiel enthält das Registrierungsskript aus acicInbox zwei Filter:

Der Filter Eingang (alles) ist der, den Sie wählen möchten. Geben Sie den internen Namen der Konfiguration an, in diesem Fall den Wert inbox-all:

let customInbox = acicInbox.settings(user).find(item => item.name === 'inbox-all');


Ausschnitt aus dem Registrierungsskript

...
      {
        type: 'configuration',
        name: 'inbox-all',
        text: i18n.translate('agorum.core.inbox.filter.InboxAll'),
        filter: filter,
        baseQuery: baseQuery,
        listType: 'detail',
        // sort: baseFilter.defaultSort(false),
        favorite: true,
        sortConfigName: 'sortconfig_updatedate_desc',
        sortConfig: baseFilter.defaultSortConfig(),
        exportConfig: exportConfig()
      },
...


customInbox.name

Definiert den eindeutigen internen Namen des neuen Filters.

customInbox.name = 'custom-inbox-demo-user';

Hinweise:

  • Vergeben Sie einen eindeutigen Filternamen.

  • Wenn Sie einen bereits vorhandenen Filternamen verwenden, überschreibt das System den anderen Filter, sodass ein Benutzer diesen entweder nicht mehr wählen kann oder der Filter gleich eingestellt ist wie der neue Filter.

  • Sie können überprüfen, ob Sie einen Filternamen bereits verwenden, indem Sie nach dem zu verwendenden Filternamen suchen und sich die Ergebnisse anschauen. Erscheint der Name nicht als acic-Filter bei den Ergebnissen, können Sie den Filternamen verwenden.


customInbox.text

Definiert den Filternamen, den Benutzer in der Bedienoberfläche sehen.

Hinweis: Vergeben Sie einen eindeutigen Filternamen.

customInbox.text = 'Eingang User (demo)';


customInbox.listType

Definiert optional, in welcher Form die Ergebnisliste erscheint.

customInbox.listType = 'explorer';
Dargestelltes Suchergebnis als Explorer-Liste
customInbox.listType = 'detail';
Dargestelltes Suchergebnis als Detail-Liste


customInbox.listConfig

Definiert optional die Konfiguration, die das System für die Darstellung der Spalten verwendet.

customInbox.listConfig = 'Standard';


customInbox.filter

Blendet optional bestimmte Filteroptionen aus.

In diesem Beispiel filtert das System die Filteroptionen Objektarten heraus:

customInbox.filter = customInbox.filter.filter(f => f.name !== 'objectTypes');

Die Filteroption Objektarten steht im neu erstellen Filter nicht mehr als Filterkategorie zur Wahl:

Eingeblendete Objektarten in den Filteroptionen
Ausgeblendete Objektarten in den Filteroptionen


filterSelection

Definiert für den neuen Filter den entsprechenden Codeschnipsel der gewählten Filteroptionen.

customInbox.filterSelection = {

Hinweise:

Inhalt von customInbox.filterSelection


Im Folgenden erhalten Sie weitere Beschreibungen zum möglichen Inhalt von customInbox.filterSelection. Erklärt wird der Codeausschnitt des hier verwendeten Beispiels. Bei Verwendung anderer Filteroptionen ändert sich der Inhalt von customInbox.filterSelection.

Um den Codeausschnitt zu erhalten, siehe Den Search query builder verwenden.

 customInbox.filterSelection = {
    inbox_forOtherCount: {
      value: true,
      valueNot: false,
      subQuery: {
        otherUser: {
          value: [
            demoUserId
          ],
          valueDisplay: [
            demoUserId
          ],
          count: 1
        },
        otherUserFromDate: {
          value: [
            null
          ],
          valueDisplay: [
            null
          ],
          count: 1
        }
      }
    }

Parameter


value

Wert Beschreibung Darstellung in Bedienoberfläche
true Filter ist gewählt.
false Filter ist nicht gewählt.
 


valueNot

Wert Beschreibung Darstellung in Bedienoberfläche
true Schließt die Filteroption im Suchergebnis aus.
false Schließt die Filteroption im Suchergebnis ein.
 


otherUser

Definiert die User-ID, damit diese beim Öffnen des konfigurierten Filters direkt gewählt ist.

Tipps:

  • Geben Sie die User-ID über eine Variable an, um die direkte ID nicht zu verwenden, da sich die User-ID ändern kann, wenn etwa der Benutzer den PC wechselt.
  • Verwenden Sie die Aktion Search query builder, wenn Sie die direkte User-ID für Testzwecke benötigen.
otherUser: {
   value: [
     demoUserId
   ],
   valueDisplay: [
     demoUserId
   ],
   count: 1
},

Der Wert demoUserId sucht den Benutzer demo über objects.find:

let demoUserId = objects.find('user:demo').ID;

Der Benutzer erscheint in der Bedienoberfläche wie folgt:

Angezeigter Benutzer


otherUserFromDate

Definiert einen Wert für das Datum, damit dieses beim Öffnen des konfigurierten Filters direkt gewählt ist.

Wenn Sie das Datum nicht benötigen, geben Sie als Wert null an:

otherUserFromDate: {
  value: [
    null
  ],
  valueDisplay: [
    null
  ],
  count: 1
}

Wenn Sie ein Datum (etwa 21.01.22) verwenden möchten, verwenden Sie folgenden Code:

otherUserFromDate: {
  value: [
    2022-01-21
  ],
  valueDisplay: [
    2022-01-21
  ],
  count: 1
}

​​​Den ​​​​​Search query builder verwenden


Verwenden Sie den Search query builder, um den Code der eingestellten Filteroptionen zu erhalten und ihn für ihre eigenen Filterkonfigurationen zu verwenden.

  1. Klicken Sie oben rechts in der Kopfleiste auf und dann auf Search query builder.
  2. Wählen Sie die Filteroptionen, die der neue Filter beim Öffnen gewählt haben soll.

     
    Voreingestellte Filteroptionen
  3. Kopieren Sie den angegebenen Code aus der current filterSelection.

     
    Code im Search query builder
  4. Passen Sie den Code an und entfernen Sie alle überflüssigen Parameter und Anführungszeichen.
  5. Fügen Sie den Code als Wert für den Parameter customInbox.filterSelection ein und entfernen Sie die Anführungszeichen.

Den Code anpassen

Passen Sie den Code an, bevor Sie ihn in Ihrer Filterkonfiguration verwenden.

  1. Entfernen Sie alle Attribute, die mode: AND enthalten, da die Konfiguration diese Attribute nicht erkennt (siehe Beispiel: Überflüssige Attribute entfernen).
  2. Ersetzen Sie die direkte ID mit einem Wert, der global den Benutzer wiederfindet (Beispiele siehe otherUser).
  3. Entfernen Sie alle Anführungszeichen.

 

Beispiel: Überflüssige Attribute entfernen

Entfernen Sie die durchgestrichenen Attribute beim Einfügen in das Registrierungsskript des neuen Filters:

{
  "inbox_userTags_list": {
    "mode": "AND"
  },
  "inbox_forOtherCount": {
    "valueNot": false,
    "value": true,
    "subQuery": {
      "otherUserFromDate": {
        "valueDisplay": [
          null
        ],
        "count": 1,
        "value": [
          null
        ]
      },
      "otherUser": {
        "valueDisplay": [
          "1025764"
        ],
        "count": 1,
        "value": [
          "1025764"
        ]
      }
    }
  },
  "inbox_InboxFilter": {
    "mode": "AND"
  },
  "inbox_globalTags_list": {
    "mode": "AND"
  },
  "objectTypes": {
    "mode": "AND"
  },
  "inbox_priorities_list": {
    "mode": "AND"
  },
  "createDate": {
    "mode": "AND"
  },
  "lastmodifyDate": {
    "mode": "AND"
  }
}

Den erstellten Filter per JavaScript prüfen


Mit dem folgenden Skript erscheint der Code eines gewählten Filters im Ausgabefeld. Damit prüfen Sie den Filter und vergleichen ihn mit einem anderen Filter.

/* jshint unused: true */
let acicInbox = require('/agorum/roi/customers/inbox/js/acic/inbox');

acicInbox.settings(null).find(item => item.name === 'inbox-all');

Parameter


acicInbox

Definiert den Pfad zum Registrierungsskript des gewünschten Filters.

Sie können jeden Filter verwenden, der ein entsprechendes Registrierungsskript besitzt.

Das folgende Beispiel gibt den Pfad zum Skript der Eingangs-Filter an:

let acicInbox = require('/agorum/roi/customers/inbox/js/acic/inbox');


acicInbox.settings(null).find

Findet den gewünschten Filter im entsprechenden Skript und gibt dazu den Code aus.

Geben Sie den internen Namen an, unter dem der Filter im System bekannt ist, etwa inbox-current für den Filter Eingang (aktuell).

Hinweise:

  • Der Filter muss im Skript vorhanden sein, das Sie durch let acicInbox geholt haben. Andernfalls findet das System den Filter nicht.

  • Den Filternamen finden Sie mithilfe des Search query builders.

Das folgende Beispiel gibt den Code des Filters Eingang (alles) aus:

acicInbox.settings(null).find(item => item.name === 'inbox-all');
Ausgegebener Code des Filters Eingang (alles)