Open Source Dokumentenmanagement
Dokumentation

Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core information center entwickeln


Filterdefinitionen für agorum.composite.search.filter konfigurieren

Sie konfigurieren Filterdefinitionen, wenn Sie einen eigenen Filter:

Beispiel der Filteroptionen im Filter Alles

Aufbau eines erstellten Filters


let filterFields = [
​​​​​
  {
    title: 'Ein Titel',
    name: 'Ein eindeutiger Name für diesen Filter',
    type: 'query',
    items: [
      {
        title: 'Titel des Filters',
        name: 'Eindeutiger Name des Filters',
        query: 'Suche des Filters'
      }
    ]
  }, 
  {
    title: 'Titel eines Term-Filters',
    name: 'Ein eindeutiger Name für diesen Filter', 
    type: 'terms',
    field: 'Solr-Feld, nach dem das System gruppieren soll',
    limit: 10,
    maxChars: 15
  }, 
  {
    title: 'Erstelldatum (letzte 10 Tage)',
    name: 'Ein eindeutiger Name für diesen Filter', 
    type: 'range',
    convert: 'date',
    formatDisplay: 'dd.MM.yyyy',
    formatSearch: 'yyyy-MM-dd',
    start: 'NOW/DAYS-10DAYS',
    end: 'NOW/DAYS+1DAY',
    gap: '+1DAY',
    field: 'createdate',
    sortOrder: 'desc'
  }
];

Allgemeine Parameter


title

Definiert eine Überschrift über dem Filter.

name

Definiert einen eindeutigen Namen für diesen Filter.

mode

Definiert optional den Modus für den Filterbereich mit AND oder OR.


AND

Das System verknüpft Felder bei der Mehrfachauswahl bei der Suche mit UND.

OR

Das System verknüpft Felder bei der Mehrfachauswahl bei der Suche mit ODER.

Such-Parameter


Mit Such-Parametern konfigurieren Sie den Stil der Filteroption.

type: query

Führt eine festgelegte Suche aus und stellt die Anzahl der Ergebnisse dar. 

Ein query-type besteht aus einem title und querys, die Sie unter items definieren.


Beispiel

Dieses Beispiel zeigt die Filteroptionen des Filters Alles. Die Filteroptionen beruhen auf einer Query.

Darstellung im Filter
function configQuery() {
    return {
      title: 'Objektarten',
      name: 'example_objectTypes',
      type: 'query',
      items: [
        {
          title: 'Dokument + Mails',
          name: 'example_documentsMails',
          query: 'classname:(fileobject OR mailobject OR amailmail OR MailDocumentObject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Dokument',
          name: 'example_documents',
          query: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Notiz',
          name: 'example_note',
          query: 'classname:(noteobject)'
        }, 
        {  
          title: 'Ordner',
          name: 'example_folders',
          query: 'classname:(folderobject OR ASmbFolder OR ALfsFolder OR ALfsMountPoint)'
        }, 
        {  
          title: 'Mail',
          name: 'example_mails',
          query: 'classname:(mailobject OR amailmail)'
        }, 
        {  
          title: 'Mailanhänge',
          name: 'example_mailAttachments',
          query: 'classname:(MailDocumentObject)'
        }
      ]
    };
  }

queryFiltered

Sucht immer nach demselben Feld.

Tipps: Verwenden Sie diesen Parameter:

  • bei vielen Suchanfragen

  • wenn der angegebene Feldname mehrfach vorkommt

  • bei Feldern, bei denen nicht allzu viele verschiedene Werte geliefert werden, etwa bei classname

Das System führt bei queryFiltered intern eine Facet-Suche durch auf das Feld, das Sie vorn am Anfang von queryFiltered definiert haben. Danach verteilt das System die Ergebnisse programmtechnisch, basierend auf den in der Klammer stehenden Werten.


Beispiel

queryFiltered: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile) ${subQuery}'

Dieses Beispiel:

Dieses Beispiel fasst mithilfe von queryFiltered die sechs einzelnen Querys zu einer einzigen Suchabfrage zusammen:

Darstellung im Filter


Komplettes Beispiel

function configQueryFiltered () {
    return {
      title: 'Objektarten',
      name: 'example_objectTypes_QueryFiltered',
      type: 'query',
      items: [
        {
          title: 'Dokument + Mails',
          name: 'example_documentsMails_QueryFiltered',
          queryFiltered: 'classname:(fileobject OR mailobject OR amailmail OR MailDocumentObject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Dokument',
          name: 'example_documents_QueryFiltered',
          queryFiltered: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Notiz',
          name: 'example_note_QueryFiltered',
          queryFiltered: 'classname:(noteobject)'
        }, 
        {  
          title: 'Ordner',
          name: 'example_folders_QueryFiltered',
          queryFiltered: 'classname:(folderobject OR ASmbFolder OR ALfsFolder OR ALfsMountPoint)'
        }, 
        {  
          title: 'Mail',
          name: 'example_mails_QueryFiltered',
          queryFiltered: 'classname:(mailobject OR amailmail)'
        }, 
        {  
          title: 'Mailanhänge',
          name: 'example_mailAttachments_QueryFiltered',
          queryFiltered: 'classname:(MailDocumentObject)'
        }
      ]
    };
  }

subQuery

Blendet optional weitere Eingabefelder unterhalb eines Filters ein, mit denen Sie das Ergebnis einschränken.

Darstellung im Filter


Beispiel

  function configSubQuery () {
    return {
      title: 'Objektarten',
      name: 'example_objectTypes_subQuery',
      type: 'query',
      items: [
        {
          title: 'Dokumente',
          name: 'example_documents_subQuery',
          queryFiltered: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile) ${subQuery}',
          subQuery: [
            {
              title: 'Name',
              name: 'example_name_subQuery',
              query: 'name:(${value})'
            }
          ]
        }
      ]
    };
  }


Eingabe des Benutzers (${value})

Die Eingabe des Benutzers greift das System als ${value} auf:

query: 'name:(${<Wert aus dem Eingabefeld> = value})'

Diese Eingabe fügen Sie in die Query an der Stelle ein, in der der Platzhalter ${subQuery} definiert ist:

queryFiltered: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile) ${subQuery} name:(${<Wert aus dem Eingabefeld> = value})'

Wenn Sie in data zusätzlich einen MetaDB-Schlüssel mitgeben, der auf eine DataSource zeigt, stellt das System eine Auswahlbox dar.

Tipps

  • Definieren Sie weitere dataParameter, um sie an den DataHandler zu übergeben.

  • Fügen Sie mit weitere Werte hinzu, die das System automatisch als ODER-Suche für das jeweilige Feld einsetzt.

data und dataParameter

Verweist über einen MetaDB-Pfad auf einen DataHandler (spezielles Metadatum, siehe DataHandler-Manager).


Syntax

{
  title: 'Test',
  name: 'test',
  query: 'allfields:classname ${subQuery}',
  subQuery: [
    {
      title: 'Test',
      name: 'test.sub',
      data: 'MAIN_MODULE_MANAGEMENT‎/customers‎/<Konfigurationsprojekt>/Data‎/<dataHandler>',
      dataParameter: {
        param1: 'Wert 1',
        param2: 'Wert 2'
      },
      query: '${value}'
    }
  ]
}


Funktionales Beispiel für die Suchoption „Notizen“

Darstellung im Filter
  function configData () {
    return {
      title: 'Notizen',
      name: 'example_notes',
      type: 'query',
      items: [
        {
          title: 'Notizen',
          name: 'example_notes_data',
          queryFiltered: 'classname:(noteobject) ${subQuery}',
          subQuery: [
            {
              title: 'Absender',
              name: 'example_creator_data',
              data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
              query: 'creator:(${value})'
            },
            {
              title: 'Empfänger',
              name: 'example_receipients_data',
              data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
              query: 'recipients:(${value})'
            }
          ]
        }
      ]
    };
  }
}

subQuery mit queryScript

Ersetzt Werte bei einer subQuery mithilfe von JavaScript.

Das Skript in der MetaDB registrieren

  1. Öffnen Sie links in der Seitenleiste Explorer.
  2. Öffnen Sie Ihr Konfigurationsprojekt und erstellen Sie die Unterordner, falls nicht vorhanden:
    Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/js/acic/query
  3. Erstellen Sie mit der rechten Maustaste eine JavaScript-Datei.
  4. Tragen Sie ein JavaScript ein, etwa:
    exports.getQuery = value => { return 'name:' + value; };
  5. Wählen Sie im Kontextmenü agorum core template manager > Register acic query
  6. Klicken Sie auf OK.

    Ergebnis: Das System registriert das Query-Skript. Den Registrierungskey benötigen Sie für den nächsten Schritt.
  7. Öffnen Sie die Datei, in der Sie die Filteroptionen konfigurieren.
  8. Geben Sie das Skript wie folgt an (beispielhafter Wert bei queryScript):
    [ {  queryScript: 'testplugin.testQueryScript', name: 'test_js_query', title: 'Test mit JS query' } ]
    

subQuery mit type=range

Stellt ein Feld mit zwei Feldern dar, um einen Bereich abzubilden (from und to).

Darstellung im Filter
function configTypeRange () {
    return {
      title: 'Erstelldatum',
      name: 'example_createDate_range',
      type: 'query',
      items: [
        {
          title: 'freie Eingabe',
          name: 'example_createDateCustom_range',
          query: '${subQuery} allfields:createdate',
          subQuery: [
            {
              query: '${value}',
              queryPart: 'createdate_date_range:[${valueFrom} TO ${valueTo}]',
              name: 'example_createdate_from_to_range',
              type: 'range',
              titleFrom: 'ab Datum (yyyy-mm-dd)',
              titleTo: 'bis Datum (yyyy-mm-dd)',
              convert: 'dateString'
            }
          ]
        }
      ]
    };
  }

Geben Sie als type den Wert range an.

Das System:

subQuery mit type=range für date

Stellt ein Feld mit zwei Feldern dar, um einen Bereich speziell für den Datentyp date abzubilden (from und to).

Darstellung im Filter


Syntax

  function configTypeDateRange () {
    return {
      title: 'Erstelldatum',
      name: 'example_createDate_rangeCustom',
      type: 'query',
      items: [
        {
          title: 'Datumsbereich',
          name: 'example_createDateRangeCustom',
          query: 'allfields:createdate ${subQuery}',
          subQuery: [
            {
              query: '${value}',
              queryPart: 'createdate_date_range:[${valueFrom} TO ${valueTo}]',
              name: 'example_createdate_range_from_to',
              type: 'date-range',
              titleFrom: 'ab Datum',
              titleTo: 'bis Datum'
            }
          ]
        }
      ]
    };
  }

Konverter


Sie können Konverter hinterlegen, die den Eingabewert konvertieren, bevor dieser zur Suche geht.

dateString

Konvertiert einen Datums-String in einen für die Suchmaschine verständlichen String.


Beispiel

...
subQuery: [ 
  {
    query: 'createdate_date_range:[${value} TO *]',
    name: 'createdate_from',
    title: 'ab Datum (yyyy-mm-dd)',
    convert: 'dateString'
  }
]
...

 

Beispiel mit type: date

...
subQuery: [ 
  {
    query: 'createdate_date_range:[${value} TO *]',
    name: 'createdate_from',
    title: 'ab Datum',
    type: 'date'
  }
]
...

double

Konvertiert einen String in einen Double.

Das System ersetzt Kommas durch Punkte, sodass die Suchmaschine die Angabe versteht.


Beispiel

...
subQuery: [ 
  {
    query: 'ag_rechnungs_betrag:{${value} TO *]',
    name: 'ag_rechnungs_betrag',
    title: 'Rechnungsbetrag höher als',
    convert: 'double'
  }
]
...

script

Ruft ein eigenes Skript für die Konvertierung auf.


Beispiel

subQuery: [ 
  {
    query: 'name:${value}',
    name: 'test_js_name',
    title: 'Test mit JS',
    convert: 'script',
    convertScript: 'testplugin.testConvertScript'
  }
]


Das Skript in der MetaDB registrieren

  1. Öffnen Sie links in der Seitenleiste Explorer.
  2. Öffnen Sie Ihr Konfigurationsprojekt und erstellen Sie die Unterordner:
    Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/js/acic/convert
  3. Erstellen Sie mit der rechten Maustaste eine JavaScript-Datei.
  4. Klicken Sie mit der rechten Maustaste auf das angelegte JavaScript.
  5. Wählen Sie im Kontextmenü agorum core template manager > Register acic convert.
  6. Klicken Sie auf OK.

    Ergebnis: Das System registriert das convert-Skript.


Syntax des Skripts

exports.convert = value => {
  // value verändern ....
  return value;
};

type: range

Achtung: Systembeeinträchtigungen durch Nutzung von range bei großen Datenmengen. range ist eine rechenintensive Funktion, speziell bei großen Datenmengen und / oder vielen Unterteilungen durch die Angabe eines zu kleinen Gaps. Verwenden Sie range mit Vorsicht.

Zählt in einem definierten Zeitraum mit Zeitschritt die Summen der jeweils darin vorkommenden gefundenen Objekte.

Diese Filtermethode gilt ausschließlich für Datums-Metadaten und Datums-Attribute.


Parameter

Parameter Beschreibung
field Definiert das Datums-Feld (Metadatum oder Objekt-Attribut), nach dem Sie gruppieren möchten.

Schreiben Sie den Wert zu diesem Parameter klein.
convert Definiert den genutzten Konverter und konvertiert die Datumswerte mithilfe der Parameter formatDisplay und formatSearch um.

Nur date ist möglich.
formatDisplay Formatiert das gefundene Datum für die Anzeige.

Die Standard-Java-SimpleDateFormat-Angaben gelten.
formatSearch Formatiert das gefundene Datum, sodass Sie eine Range-Suche ausführen können.

Solr liefert intern einen kompletten Zeitstempel im ISO-Format. Gruppierung nach Jahren
2017-01-01T00:00:00.000Z
2018-01-01T00:00:00.000Z

Soll der Filter beim Anklicken alle Objekte des jeweils gewählten Jahres finden, extrahieren Sie das Jahr aus diesem Datum, sodass die Suchmaschine die jeweilige Jahreszahl erhält.

Beispiel für Jahr
yyyy

Beispiel für Monat
yyyy-MM

Beispiel für Tag
yyyy-MM-dd

  • Die Standard-Java-SimpleDateFormat-Angaben gelten.
  • Wenn Sie die Option addGapToQuery auf true setzen, ignoriert das System formatSearch, weil das Datum grundsätzlich in einen vollständigen ISO-Datumswert mit Zeitangabe konvertiert werden muss.
start

Definiert den Beginn des Suchbereiches, ab dem die Gruppierung erfolgt.

Beispiel für vor 3 Jahren
NOW/YEAR-3YEARS

Beispiel für vor 1 Monat
NOW/MONTH-1MONTH

Beispiel für ein exaktes Datum (ab 01.01.2035)
2035-01-01T00:00:00.000Z

end Definiert das Ende des Suchbereichs, bis zu dem die Gruppierung erfolgt.
gap Definiert die Schrittweite für Gruppierungen.

Beispiel für jährlich
+1YEAR

Beispiel für monatlich
+1MONTH

Beispiel für täglich
+1DAY
addGapToQuery Fügt optional an die Query die Angabe von gap an, um eine Bereichssuche durchzuführen.

Mögliche Werte
• true
• false
  • Wenn Sie als gap etwa +7DAYS wählen, gibt das System die Ergebnisse in Schritten von 7 Tagen aus.
  • Um in diesem Filter etwa alle Ergebnisse innerhalb der gewählten 7 Tage zu suchen, fügen Sie addGapToQuery: true hinzu.
  • Da das Datum grundsätzlich in einen vollständigen ISO-Datumswert mit Zeitangabe konvertiert werden muss, ignoriert das System die Angabe formatSearch.
Beispiel mit benötigtem addToQuery=true
Beispiel mit nicht benötigtem addToQuery
sortOrder Sortiert die Suchergebnisse nach Wert (alphanumerisch), bei Datum entspricht das dem jeweils gefundenen ISO-Datumswert.

asc
aufsteigend (Standard)

desc
absteigend
maxChars Kürzt optional die gefundenen Werte auf die angegebene maximale Zeichenanzahl und fügt … an.

 

Beispiel mit benötigtem addToQuery=true

Dieses Beispiel gibt alle Kalenderwochen (7-Tage-Schritte) basierend auf dem createDate zwischen dem aktuellen Jahr - 1 bis zum aktuellen Jahr + 1 aus.

Ergebnis im Filter


Skript

  function configTypeRangeAddGapToQuery () {
    return {
      title: 'Test gap (7 Tage)',
      name:  'configTypeRangeAddGapToQuery', 
      type: 'range',
      convert: 'date',
      formatDisplay: '\'KW \'w \'- \'dd.MM.yyyy',
      formatSearch: 'yyyy-MM-dd',
      start: 'NOW/YEAR-1YEAR',
      end: 'NOW/YEAR+1YEAR',
      gap: '+7DAY',
      addGapToQuery: true,
      field: 'createdate',
      sortOrder: 'asc'
    };
  }

 

Beispiel mit nicht benötigtem addToQuery

Dieses Beispiel gibt alle Ergebnisse gruppiert nach Jahr aus zwischen aktuellem Jahr - 10 Jahre bis zum aktuellen Jahr + 10 Jahre.


Ergebnis im Filter

Ergebnis im Filter


Skript

  function configTypeRangeAddGapToQueryFalse () {
    return {  
      title: 'Test gap (Jahr)',
      name:  'configTypeRangeAddGapToQueryFalse', 
      type: 'range',
      convert: 'date',
      formatDisplay: 'yyyy',
      formatSearch: 'yyyy',
      start: 'NOW/YEAR-10YEAR',
      end: 'NOW/YEAR+10YEAR',
      gap: '+1YEAR',
      addGapToQuery: false,
      field: 'createdate',
      sortOrder: 'asc'
    };
  }

type: terms


Parameter

Parameter Beschreibung
field Definiert das Feld, nach dem Sie gruppieren möchten (Metadatum oder Objekt-Attribut).
  • Schreiben Sie den Wert zu diesem Parameter klein.
  • Wenn Sie Groß- und Kleinschreibung ignorieren möchten, fügen Sie die Endung _ci an.
limit Definiert die maximale Anzahl von Gruppierungselementen, die das System darstellt.
sortOrder Sortiert die Suchergebnisse nach Wert (alphanumerisch).

asc
aufsteigend (Standard)

desc
absteigend
maxChars Kürzt optional die gefundenen Werte auf die angegebene maximale Zeichenanzahl und fügt an.
missing true
Fügt optional einen Eintrag für alle Elemente, die nicht das entsprechende Metadatum (field) besitzen, hinten an den Filter an.

false
Fügt keine Einträge an.
missingText Parameter ist definiert
Gibt optional den angegebenen Text als Filter aus.

Parameter ist NICHT definiert
Gibt den Text Alle anderen aus.
translate true
Übersetzt optional die von der Suche zurückgelieferten Werte.

false (Standard)
Übersetzt die von der Suche zurückgelieferten Werte NICHT.
  • Sie können statt einem Boolean einen String als Präfix für die Übersetzung mitgeben (siehe Beispiel). Das System übersetzt dann den Facet-Wert, indem es das definierte Präfix davor setzt.
  • Lautet ein Wert etwa Test, lautet der Übersetzungsschlüssel agorum_translate_prefix_Test.
Beispiel
translate: 'agorum_translate_prefix_'​​​​​​

Komplettes Beispiel


Komplettes Beispiel


Skript

/* global sc */
/* jshint unused: true */

// load base configuration for agorum core information center
let baseFilter = require('/agorum/roi/customers/agorum.composite/js/aguila/acic/settings/base-filter');

// export the configuration
exports.settings = user => { 
  if (!user) user = sc.loginUser;

  let baseQuery = baseFilter.baseQuery(user);


  let filter = [

    {
      title: 'Objektarten',
      name: 'objectTypes',
      type: 'query',
      items: [
        {
          title: 'Dokument + Mails',
          name: 'documentsMails',
          queryFiltered: 'classname:(fileobject OR mailobject OR amailmail OR MailDocumentObject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Dokument',
          name: 'documents',
          queryFiltered: 'classname:(fileobject OR ASmbFile OR FaxFile OR ALfsFile)'
        }, 
        {  
          title: 'Notizen',
          name: 'notes',
          queryFiltered: 'classname:(noteobject) ${subQuery}',
          subQuery: [
            {
              title: 'Absender',
              name: 'creator',
              data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
              query: 'creator:(${value})'
            },
            {
              title: 'Empfänger',
              name: 'receipients',
              data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
              query: 'recipients:(${value})'
            }
          ]
        }, 
        {  
          title: 'Ordner',
          name: 'folder',
          queryFiltered: 'classname:(folderobject OR ASmbFolder OR ALfsFolder OR ALfsMountPoint)'
        }, 
        {  
          title: 'Mail',
          name: 'mails',
          queryFiltered: 'classname:(mailobject OR amailmail)'
        }, 
        {  
          title: 'Mailanhänge',
          name: 'mailAttachments',
          queryFiltered: 'classname:(MailDocumentObject)'
        }
      ]
    }, 
    {
      title: 'Erstelldatum',
      name: 'createDate',
      type: 'query',
      items: [
        {
          title: 'Heute',
          name: 'today',
          query: 'createdate_date_range:[NOW/DAY-1DAY TO NOW/DAY]'
        },
        {
          title: 'Gestern',
          name: 'yesterday',
          query: 'createdate_date_range:[NOW/DAY-2DAY TO NOW/DAY-1DAY]'
        },
        {
          title: '1 Woche',
          name: 'oneWeek',
          query: 'createdate_date_range:[NOW/DAY-7DAY TO NOW/DAY]'
        },
        {
          title: '1 Monat',
          name: 'oneMonth',
          query: 'createdate_date_range:[NOW/MONTH-1MONTH TO NOW/MONTH]'
        },
        {
          title: 'freie Eingabe',
          name: 'createDateCustom',
          query: '${subQuery} allfields:createdate',
          subQuery: [
            {
              query: '${value}',
              queryPart: 'createdate_date_range:[${valueFrom} TO ${valueTo}]',
              name: 'createdate_from_to',
              type: 'range',
              titleFrom: 'ab Datum (yyyy-mm-dd)',
              titleTo: 'bis Datum (yyyy-mm-dd)',
              convert: 'dateString'
            }
          ]
        }
      ]
    },
    { // globale Tags 
      title: 'Tags',
      name: 'tags',
      type: 'terms',
      mode: 'OR',
      field: 'ag_tags_ci',
      translate: false,
      limit: 10
    }, 
    {  
      title: 'Dateiendung',
      name: 'extensions',
      type: 'terms',
      field: 'nameextension_ci',
      limit: 200,
      missing: true,
      missingText: 'Objekte ohne Endung',
      maxChars: 15
    }


  ];

  return [
    {
      type: 'configuration',
      name: 'ag_doku_mf_FilterConfiguration',
      text: 'mf Doku AG',
      filter: filter,
      baseQuery: baseQuery,
      listType: 'detail',
      listTimeline: false,
      favorite: true,
      sort: baseFilter.defaultSort(false)
    }
  ];
};

Einen Filter vorbelegen


Verwenden Sie diese Struktur, um einen Filter vorzubelegen:

filterSelection: {   
  documentsMails: {
    value: true   
  },   
  extensions: {     
    value: [ 'html' ]   
  } 
}

Query-Filter

Geben Sie den Namen des Filters an und value=true.

filterSelection: {   
  documentsMails: {
    value: true   
  }
}

term-Filter

Geben Sie den Namen des Filters an und jeweils ein Array von gewählten Elementen aus dem Filter als value.

filterSelection: {   
  extensions: {     
    value: [ 'html' ]   
  } 
}


Beispiel mit Wert als Datum

filterSelection: {   
  createDateYears: {     
    value: [ '2018-01-01T00:00:00.000Z' ]   
  } 
}

Filterselektionen negieren

Sie können Filterselektionen negieren und damit definieren, was nicht auf den gewählten Filter passt.


Beispiel

Dieser Filter definiert keine Dokumente und E-Mails und nicht-HTML als Endung:

filterSelection: {   
  documentsMails: {
    value: true,
    valueNot: true
  },   
  extensions: {     
    value: [ 'html' ],
    valueNot: [ 'html' ]
  } 
}


Suchmodus (AND, OR) eines Bereichs wechseln

filterSelection: { 
  tags: { 
    mode: 'OR' // AND ist Standard
  } 
}

subQuerys vorbelegen


Beispiel

Dieses Beispiel aktiviert den Filter Notizen (notes) und füllt den Super-Administrator roi (ID=11000) als Wert bei Absender (creator) ein.

Stehen bei value mehrere Werte (Array), entspricht diese Angabe der ODER-Suche in diesem Feld (+ - Symbol in der Suche).

filterSelection: {
  notes: {
    valueNot: false,
    value: true,
    subQuery: {
      creator: {
        value: [ '11000' ]
      }
    }
  }
}

Vollständiges Beispiel zur Vorbelegung von Filtern

Dieses Beispiel zeigt, wo Sie die Filtervorbelegung namens filterSelection im JavaScript-Filter hinterlegen:

Ergebnis der Vorbelegung von Filtern

 

Skript

/* global sc */
/* jshint unused: true */

// load base configuration for agorum core Information Center
let baseFilter = require('/agorum/roi/customers/agorum.composite/js/aguila/acic/settings/base-filter');

function filterExampleSimple() {
  return {
    title: 'Simples Beispiel',
    name: 'filterExampleSimple',
    type: 'query',
    items: [      
      {  
        title: 'Notizen',
        name: 'filterExampleSimple_notes',
        queryFiltered: 'classname:(noteobject) ${subQuery}',

        subQuery: [
          {
            title: 'Absender',
            name: 'filterExampleSimple_creator',
            data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
            query: 'creator:(${value})'
          },
          {
            title: 'Empfänger',
            name: 'filterExampleSimple_receipients',
            data: 'MAIN_MODULE_MANAGEMENT/customers/agorum.composite/Data/agorum_composite_user_search',
            query: 'recipients:(${value})'
          }
        ]
      }
    ]        
  };
}

let filter = [];
filter.push(filterExampleSimple());

function settings(user) {
  if (!user) user = sc.loginUser;

  let baseQuery = baseFilter.baseQuery(user);

  return [
    {
      type: 'configuration',
      name: 'example_vorbelegung_im_Filter',
      text: 'Beispiel: Vorbelegter Filter',
      filter: filter,
      baseQuery: baseQuery,
      listType: 'detail',
      listTimeline: false,
      favorite: true,
      sort: baseFilter.defaultSort(false),
      filterSelection: {
        filterExampleSimple_notes: {
          valueNot: false,
          value: true,
          subQuery: {
            filterExampleSimple_creator: {
              value: [ '11000' ] //user roi besitzt immer diese ID
            }
          }
        }
      },
    }
  ];

}

module.exports = {
  settings: settings
};