Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

search-utils - Hilfsbibliothek für die Suche verwenden

Verwendung


let searchUtils = require('/agorum/roi/customers/agorum.composite/js/aguila/search/search-utils');

Die Suche mit den Einstellungen des Benutzers aufrufen


Der Benutzer kann in der Home-Bar (kleines Zahnrad neben der Sucheingabe) einstellen, wie sich die Standardsuche öffnet. Verwenden Sie Funktion showSearchWindow, wenn sich die Suche programmtechnisch öffnen soll.


Beispiel

let searchUtils = require('/agorum/roi/customers/agorum.composite/js/aguila/search/search-utils');

let settings = searchUtils.loadSearchWindowSettings();
searchUtils.showSearchWindow({
  type: 'agorum.composite.acic',
  query: 'optionaler Suchstring',
  settingName: 'ac_all',
}, settings, 'Titel der Suche');

Den CSV-Export mit exportSearch() erstellen


Sie erstellen mithilfe der Bibliothek search-utils einen CSV-Export auf Basis eines Suchergebnisses.

Einfacher Aufruf als Bibliothek

let searchUtils = require('/agorum/roi/customers/agorum.composite/js/aguila/search/search-utils');

searchUtils.exportSearch({
  query: 'nameextension:pdf W*',
  uuid: true,
  resolveHeader: true
});


Mögliches Ergebnis

Name;Beschreibung;Ersteller;Erstelldatum;Dateigröße;Zuletzt geändert durch;Letzte Änderung;uuid
"Willkommen.pdf";;"roi";"2020-09-03T13:50:23.698Z";"185688";"roi";"2020-09-03T13:50:23.899Z";"6a233b20-edec-11ea-9888-02420a0a0012"

Rückgabewert

Die Einstellungen in der Suche laden

Das System versucht, aus den folgenden Parametern Filter oder Einstellungen zu laden. Ist dies nicht möglich, führt es stattdessen die mitgegebene Suche aus.

Hinweis: Sind weder settingName, settings oder filter angegeben, so muss eine query oder baseQuery zur Verfügung stehen.


settingName

Definiert den Namen der zu ladenden Einstellung (setting) in der Suche.

Geben Sie den internen Namen des Filters mit, der laden soll, etwa für den Filter Alles der Name ac_all.


settings

Setzt eine eigene Liste von Filtern.

Das System lädt im Standard alle zur Verfügung stehenden Filter.


filter

Definiert gewählte Filter-Elemente im Filterbereich.

Beschreibung der Filter siehe agorum.composite.search.filter


filterSelection

Gibt eine Selektion des Filters mit.

Die Selektion schränkt etwa im Filter Alles auf Dokumententypen oder das Änderungsdatum ein.

Suche


query

Gibt eine normale Solr-Suche mit.

Diese Suche erscheint im Suchfeld.


baseQuery

Gibt eine normale Solr-Suche mit.

Sortierung

Alle folgenden Parameter sind optional.


sort

Definiert die Sortierung der Suche und somit der Ausgabedatei.


Beispiel

// optional
sort: [{
  property: 'name',
  direction: 'ASC'
}],


sortConfig

Definiert eine bereits existierende Sort-Konfiguration.


Beispiel für Einstellungen in der Suche

let baseFilter = require('/agorum/roi/customers‎/agorum.composite‎/js‎/aguila‎/acic‎/settings‎/base-filter');

// ...
sortConfig: baseFilter.defaultSortConfig(),


sortConfigName

Definiert eine bereits existierenden Sort-Konfiguration anhand des Namens.

Setzen Sie zuvor entweder mit settingName eine Konfiguration in der Suche oder belegen Sie sortConfig, um den Parameter sortConfigName verwenden zu können.


Beispiel

sortConfigName: 'sortconfig_name_asc',

Spalten (header) konfigurieren

Die ausgegebenen Daten orientieren sich über den definierten Header. Um Daten zusammenzustellen, existieren mehrere Wege.

Sie können eine Listenkonfiguration in der Suche wählen. Anhand dieser erstellt das System den Header.


listConfig

Definiert den Namen einer bestehenden Listenkonfiguration im agorum core explorer.


Beispiel

istConfig: 'agorum.composite.asa.list.export.Default',

Output (Ausgabe)

Die folgenden Einstellungen steuern den Aufbau der Ausgabedatei. Das System fasst diese unter dem Parameter output zusammen.

Alle folgenden Parameter sind optional.


exportFile

Definiert die Ausgabedatei (agorum core-Objekt) oder den Namen der Ausgabedatei.

Das System:


header

Definiert einen Header.


resolveHeader

Definiert, ob das System den Header auflöst.


rowHandler

siehe Handler


afterQueryHandler

siehe Handler


encoding

Definiert die Zeichenkodierung der Datei (Standard: UTF-8).


delimitier

Definiert die Trennzeichen für die CSV-Datei (Standard: ;).


exportMax

Grenzt die erhaltenen Einträge auf eine bestimmte Anzahl ein.

Verwenden Sie diesen Parameter zu Testzwecken, um etwa 1000 Objekte schnell einzufügen und eine Übersicht zu erhalten, ob die Handler funktionieren und die Daten vollständig aufbereitet sind.


uuid

Wert Beschreibung
true Fügt die UUID automatisch dem Header hinzu.
false (Standard) Fügt die UUID NICHT automatisch dem Header hinzu.


metadataCollection

Definiert eine metadata collection, die zur Generierung des Headers und der zu verwendenden Daten dient.

Parameter in der MetaDB als systemweite Standards einstellen

Die folgenden Parameter finden Sie in der Administration > MetaDB unter:

MAIN_MODULE_MANAGEMENT/customers/agorum.composite.acic/export
Parameter Beschreibung
encoding ISO-8859-15 (oder UTF-8, oder andere encodings)
delimitier ; (oder , oder jedes beliebige andere Zeichen)
exportMax 1000 (oder jede beliebige andere Zahl)


Beispiel 1 mit einfachen Header-Angaben

output: {
  exportFile: 'logfile_name.csv',
  header: 'name;createdate;customHeader', 
  resolveHeader: true,
  rowHandler: '/agorum/roi/customers/test/js/row-handler',
  afterQueryHandler: '/agorum/roi/customers/test/js/after-query',
  beforeQueryHandler: '/agorum/roi/customers/test/js/before-query', 
  encoding: 'UTF-8',
  delimitier: ';',
  uuid: true,
  exportMax: 500 // max items, to export
}


Beispiel 2 mit detaillierteren Header-Angaben

output: {
  exportFile: 'logfile_name.csv',
  header: [
    {
      name: 'name',
      displayName: 'Name'
    },
    {
      name: 'createdate',
      displayName: 'Erstelldatum'
    },
    {
      name: 'customHeader',
      displayName: 'Eigener Header'
    }
  ],
  resolveHeader: true,
  rowHandler: '/agorum/roi/customers/test/js/row',
  afterQueryHandler: '/agorum/roi/customers/test/js/after-query',
  beforeQueryHandler: '/agorum/roi/customers/test/js/before-query',
  encoding: 'UTF-8',
  delimitier: ';',
  exportMax: 500 // max items, to export
}


Beispiel 3 mit der Angabe einer metadata collection

output: {
  resolveHeader: true,
  metadataCollection: 'agorum_demo_test_collection',
  encoding: 'UTF-8',
  delimitier: ';',
  exportMax: 500 // max items, to export
}

Handler

Über den Parameter Handler geben Sie Skripte mit, um sich in den Export einzuhängen und ihn zur Laufzeit zu manipulieren.


rowHandler


Beispiel

Das folgende Beispiel holt das Objekt anhand der UUID und setzt die zwei neuen Spalten newCol und identifier.

Hinweis: Übergeben Sie neue Spalten, müssen diese im Header vorkommen, da sie sonst nicht im Export erscheinen.
let objects = require('common/objects');
let metadata = require('common/metadata');

function rowHandler(row) {
  // console.log('rowHandler', row);
  
  let object = objects.tryFind(row.uuid);
  if (object) {
    let md = metadata().load(object, 'identifier').data();

    row.newCol = 'created by handler: ' + row.name;
    row.identifier = md.identifier;
  }
  return row;
}

module.exports = {
  rowHandler: rowHandler
};


beforeQuery

Dieser Handler erhält folgende Parameter in data mit und kann diese verändern:

Wie im rowHandler können die Informationen komplett verändert oder gelöscht werden, indem null zurückgegeben wird. Dann greift bei header und exportFile das Standardverhalten.


Beispiel

Das folgende Beispiel ergänzt den Header um die zwei Felder newCol und indentifier mit einem optionalen Anzeigenamen:

function beforeQuery(data) {
  let header = data.header;

  header.push({
    name: 'area',
    displayName: 'Area'
  });

  header.push({
    name: 'identifier',
    displayName: 'Identifier'
  });

  return data;
}

module.exports = {
  beforeQuery: beforeQuery
};


afterQuery


Beispiel

function afterQuery(data) {
  // console.log('data', data.query);

  // modify the query
  data.query += ' name:ac*';
 
  return data;
}

module.exports = {
  afterQuery: afterQuery
};

Verpflichtende Parameter

Kombinieren Sie verschiedene Einstellungen, können einige Parameter verpflichtend werden. Fehlen diese, so meldet die Bibliothek einen Fehler.

Weitere Beispiele


Beispiel mit allen Parametern

searchUtils.exportSearch({
  settingName: 'ac_all',
  // settings: ['xxx'], // fill with correct settings
  // filter: ['xxx'], // filter with correct settings
  // filterSelection: ['xxx'], // fill with correct filterSelection
  query: 'AB*',
  // baseQuery: 'nameextension:pdf',
  /**
  sort: [{ // optional
    property: 'name',
    direction: 'ASC'
  }],
  /**/
  /**/
  sortConfig: baseFilter.defaultSortConfig(),
  sortConfigName: 'sortconfig_name_asc',
  /**/

  listConfig: 'ExportStandard',
  output: {
    exportFile: 'logfile_name.csv',
    header: 'name;createdate;customHeader', // optional csv header, if not defined, use from listConfig, or none
    resolveHeader: true,
    // rowHandler: '/agorum/roi/customers/test/js/row',   
    // afterQueryHandler: '/agorum/roi/customers/test/js/after-query',   
    // beforeQueryHandler: '/agorum/roi/customers/test/js/before-query', 
    encoding: 'UTF-8',
    delimitier: ';', // renamed from seperator
    exportMax: 500 // max items, to export
  }
});


Beispiel zur Verwendung einer Konfiguration in der Suche

searchUtils.exportSearch({
  settingName: 'ac_all',
  query: 'test',
  sortConfigName: 'sortconfig_name_asc',
  output: {
    exportFile: 'logfile_name.csv',
    // resolve names, if defined in metadata.yml
    resolveHeader: true,
    
    // optional js handler
    // rowHandler: '/agorum/roi/customers/test/js/row',   
    // afterQueryHandler: '/agorum/roi/customers/test/js/after-query',   
    // beforeQueryHandler: '/agorum/roi/customers/test/js/before-query', 
    
    encoding: 'UTF-8',
    delimitier: ';',
    exportMax: 100 // max items, to export
  }
});


Beispiel mit diversen Attributen und Metadaten

searchUtils.exportSearch({
  query: 'inpath:9999 allfields:ag_packagename',
  sort: [{ 
    property: 'name',
    direction: 'ASC'
  }],
  
  output: {
    resolveHeader: true,
    header: [
      {
        name: 'name',
        displayName: 'Name'
      },
      {
        name: 'id'
      },
      
      // direktes Metadaten Attribut
      {
        name: '~~area[0]',
        displayName: 'Area'
      },
      
      // metadatum
      {
        name: 'ag_packageName'
      }   
    ]
  }
});


Beispiel eines Exports in eigenes Datei-Objekt

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

// Datei suchen, ob bereits vorhanden
let file = objects.tryFind('/agorum/roi/Files/Demo/test-export-file.csv');
if (!file) {
  // Datei ist noch nicht vorhanden, anlegen
  file = objects.create('file', {
    name: 'test-export-file.csv',
    target: objects.find('/agorum/roi/Files/Demo')
  });
}

searchUtils.exportSearch({
  query: 'inpath:9999 allfields:ag_packagename',
  sort: [{ 
    property: 'name',
    direction: 'ASC'
  }],
  
  output: {
    exportFile: file,
    resolveHeader: true,
    header: [
      {
        name: 'name',
        displayName: 'Name'
      },
      {
        name: 'id'
      },
      
      // direktes Metadaten Attribut
      {
        name: '~~area[0]',
        displayName: 'Area'
      },
      
      // metadatum
      {
        name: 'ag_packageName'
      }   
    ]
  }
});