Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core information center entwickeln
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.
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.
Hinweis: Bei der JavaScript-Datei handelt es sich um den Filter.
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.
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 ]; };
acicInbox
Definiert den Pfad zum Registrierungsskript des gewünschten Filters.
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';
customInbox.listType = 'detail';
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:
filterSelection
Definiert für den neuen Filter den entsprechenden Codeschnipsel der gewählten Filteroptionen.
customInbox.filterSelection = {
Hinweise:
Verwenden Sie zum Erstellen des Codeschnipsels den Search query builder.
Weitere Informationen zum Inhalt des Parameters siehe 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 } } }
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. |
Definiert die User-ID, damit diese beim Öffnen des konfigurierten Filters direkt gewählt ist.
Tipps:
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:
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 }
Verwenden Sie den Search query builder, um den Code der eingestellten Filteroptionen zu erhalten und ihn für ihre eigenen Filterkonfigurationen zu verwenden.
Passen Sie den Code an, bevor Sie ihn in Ihrer Filterkonfiguration verwenden.
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" } }
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');
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');