Skip to main content
Skip table of contents

Zoekdefinitie eigenschappen

Vooraf

Deze pagina is een referentie voor de technische eigenschappen van een zoekdefinitie. Ze beschrijft welke velden verplicht zijn, welke optioneel zijn, en hoe je ze correct gebruikt.

De minimaal verplichte eigenschappen om tot een correcte zoekdefinitie te komen zijn “label“, “key”, “datasourceType”, “columnDefinitions” en “views”.

Enkel de meest courante mogelijkheden worden hier opgelijst. Voor complexere definities neem je best contact op met het Skryv team.

Key en label

Eigenschap & Type

Beschrijving & Sample

key (string)

Unieke ID van de zoekdefinitie

“key” : “bulkGoedkeuring”

label (string)

Naamgeving van de zoekdefinitie

“label” : “Selecteer dossiers voor goedkeuring”

Functionaliteiten resultatenlijst

Eigenschap & Type

Beschrijving & Sample

allowSearch (boolean)

Zoekvenster boven de resultatenlijst. Dit zoekvenster kan je uitbreiden naar een complex zoekformulier via “searchOptions”.

Default true

“allowSearch” : false

allowViewConfiguration (boolean)

Knoppen boven de resultatenlijst voor het aanmaken, opslaan en verwijderen van weergaves.

“allowViewConfiguration” : true

allowViewSelection (boolean)

Dropdown selector voor het selecteren van een weergave.

  • Default true, dit betekent dat je meerdere “views” moet definiëren.

  • Bij select task (zie use case bulktaken) false

“allowViewSelection” : true

allowSelectableItems (boolean)

Aanvinkbare checkboxes voorafgaand aan elk item.

“allowSelectableItems” : true

allowExport (boolean)

Export knop (hiervoor heeft de gebruiker ook een specifieke UI autorisatie nodig).

  • Default false

  • Bij select task (zie use case bulktaken) altijd false, je kan dit niet wijzigen.

“allowExport” : false

showDossierTypeFilter (boolean)

Dropdown selector boven de resultatenlijst waar je kan filteren op dossiertype.

Default false (behalve in dashboard dossier overzicht).

“showDossierTypeFilter” : true

Gegevensbron

Eigenschap & Type

Beschrijving & Sample

datasourceType (string)

Gegevensbron waar de data opgehaald wordt. Mogelijke opties:

  • “datasourceType” : “es/dossiers” elasticSearch dossiers endpoint.

  • “datasourceType” : “es/tasks” elasticSearch tasks endpoint.

  • “datasourceType” : “be/tasks” backend tasks endpoint.

  • “datasourceType” : “be/incidents” backend incidents endpoint.

  • “datasourceType” : “be/incidentsGrouped” backend incidents grouped endpoint.

  • “datasourceType” : “search/dossiers” search dossiers endpoint.

  • “datasourceType” : “search/tasks” search tasks endpoint.

  • “datasourceType” : “search/forms” search forms endpoint.

Verborgen filters

Lijst van hiddenFilters

Eigenschap & Type

Beschrijving & Sample

hiddenFilters (string)

Filterregels die toegepast worden, maar verborgen blijven voor de backoffice gebruiker. Hij of zij kan ze dan ook niet uitschakelen.

  • Default geen filters toegepast.

  • Bij select task (zie use case bulktaken) zijn er sowieso enkele default filters. Zo moet de gerelateerde bulktaak bijvoorbeeld actief staan.

"hiddenFilters" : {} (geen extra verborgen filters toegepast)

CODE
  "hiddenFilters": [
    {
      "field": {
        "path": "dossier.dossierDefinition.key",
        "options": {
          "nesting": "dossier"
        }
      },
      "value": "book-reservation"
    }
  ],

Voor elke hiddenFilter afzonderlijk

Gelijkaardig als bij kolomdefinities (zie hieronder).

Kolom definitie

Lijst van kolommen

Eigenschap & Type

Beschrijving & Sample

columnDefinitions (lijst van kolom definitie keys en definitie objecten)

Hieronder een sample met vier kolommen waarvan de laatste kolom ‘Aanvrager’ samengesteld is uit informatie uit twee formuliervelden ‘Naam’ en ‘Voornaam’.

CODE
 "columnDefinitions": [
  {
  "heading": "Dossiernummer",
  "select": ["dossier.label", "dossier.id"],
  "field": "dossier.label"
  },
  {
  "heading": "Dossiertype",
  "key": "dossier.type",
  "field": "dossier.dossierDefinition.label"
  },
  {
  "heading": "Naam vereniging",
  "key": "vereniging",
  "field": "dossier",
  "content": "[lookup('dossier.dossierDefinition.key', item) === 'subsidieSportvereniging' ? lookup('document.aanvraagformulierSubsidieSportvereniging.naamVereniging', item) : lookup('document.aanvraagSubsidieStraatFeestWijkComite.naamComite', item)]"
  },
  {
  "heading": "Aanvrager",
  "key": "aanvrager",
  "type": "multi-field",
  "fields": [
  {
  "type": "search/text",
  "field": {
    "path": "document.aanvraagformulierSubsidieSportvereniging.hoofdaanvrager.voornaam",
    "options": { "nesting": "document" }
    }
  },
  {
  "type": "search/text",
  "field": {
    "path": "document.aanvraagformulierSubsidieSportvereniging.hoofdaanvrager.naam",
    "options": { "nesting": "document" }
    }
  }
  ]
  }
 ]

Voor elke kolom afzonderlijk

Eigenschap & Type

Beschrijving & Sample

heading (string)

Naam van de kolom

“heading” : “Dossiernummer”

key (string)

Unieke ID van de kolom

“key” : “dossierNummer”

type (string)

Gegevenstype van de info die je in de kolom gevisualiseerd wil zien. Bijvoorbeeld tekst, boolean, enzovoort.

  • keyword (“search/keyword”):

  • datum (“search/date");

  • tekst (“search/text");

  • getal, currency (“search/document/number”);

  • multichoice (“search/document/multichoice"); hierbij moet je de mogelijke opties oplijsten (zie “choices") + sorteerfunctie uitschakelen (zie “sort").

  • choice (“search/document/choice"); hierbij moet je de mogelijke opties oplijsten (zie “choices") + sorteerfunctie uitschakelen (zie “sort").

  • boolean (“search/document/boolean")

  • attachment (“search/document/attachment"); toont de naam van de opgeladen bijlage

  • combinatie tekstvelden (“multi-field"); alle geneste velden moeten van het type tekst (“search/text") zijn

field (string of object)

Pad naar de info die je in de kolom gevisualiseerd wil zien.

Root level info:

  • “field” : “dossier.label” : dossierlabel.

  • "field": "milestones.status": mijlpalen.

  • "field": "lastMilestone.status": laatste mijlpaal.

  • "field": "dossier.type": dossiertype.

  • "field": "dossier.latestActivity": tijdsstempel laatste activiteit.

Formulier info:

CODE
"field" : {
  "path" : "document.keyFormulier.keyVeld",
  "options" : {"nesting" : "document"}
}

fields (lijst van objecten)

Enkel wanneer type een combinatie van tekstvelden (multi-field) is. De lijst bevat objecten met de eigenschappen “type" en “field".

CODE
"fields": [
 {
 "type": "search/text",
 "field": {
    "path": "document.aanvraagformulierSubsidieSportvereniging.hoofdaanvrager.voornaam",
    "options": { "nesting": "document" }
    }
 },
 {
 "type": "search/text",
 "field": {
 "path": "document.aanvraagformulierSubsidieSportvereniging.hoofdaanvrager.naam",
 "options": { "nesting": "document" }
    }
 }
]

choices

Enkel wanneer type “choice" of “multichoice" is. Oplijsting van de mogelijke opties in dit veld.

CODE
"choices" : [
  {
    "name" : "a",
    "label" : "optie a"
  },
  {
    "name" : "b",
    "label" : "optie b"
  }
  ]

filter (boolean)

Bepaal of de gebruiker de kolom kan filteren.

Default true

“filter” : false

sort (boolean)

Bepaal of de gebruiker de kolom kan sorteren.

Default true

“sort” : false

select

Bepaalt welke velden uit de gegevensbron moeten worden opgehaald om ze beschikbaar te maken voor gebruik binnen de kolomdefinitie. Gebruikt in combinatie met “search/keyword”.

"select": ["dossier.label", "dossier.id"]

content

Stelt je in staat om de inhoud van een kolom dynamisch te bepalen aan de hand van een script of expressie (bijvoorbeeld via een lookup). Meer info aan de hand van een voorbeeld.

CODE
"content": "lookupAll(
  'document.betalingsregels.begunstigden.elements',item
 ).map(
   function(item){
     return (
      (item.natuurlijke_persoon.name ? item.natuurlijke_persoon.name : item.naam_rechtspersoon + ' (' + item.btw +')' ) + ' - ' + item.rekeningnummerGeformateerd)"

Weergave definitie

Lijst van weergaves

Eigenschap & Type

Beschrijving & Sample

views (lijst van weergave definitie keys en definitie objecten)

Hieronder een sample met slechts één enkele view.

CODE
"views": [
  {
   "name": "Default view",
   "searchTerm": "",
   "columns": ["dossier.label", "dossier.type", "vereniging", "aanvrager"],
   "filters": [],
   "sort": {
     "criterion": "dossier.label"
   }
  }
 ]

Default weergave

Eigenschap & Type

Beschrijving & Sample

defaultView (naam van een weergave, string)

Dit is de weergave die de gebruiker standaard te zien krijgt.

“defaultView” : “onlyHighPriority”

Voor elke weergave afzonderlijk

Eigenschap & Type

Beschrijving & Sample

name (string)

Naam van de weergave.

“name” : “Detailweergave”

columns (lijst van kolom definition keys)

Lijst met kolom definitie keys. Deze verwijzen naar de kolommen gedefinieerd in de kolom sectie van de zoekdefinitie.

“columns” : [“dossierNummer”, “naamAanvraag”, “bedragPremie”]

dossierType (string)

Beperkt de gevisualiseerde resultaten tot een specifiek dossiertype.

"dossierType": "mijnDossierType"

searchTerm (string of expressie)

Default zoekterm die ingevuld wordt in het zoekvenster bovenaan. De gebruiker kan de zoekterm uiteraard zelf wijzigen.

“searchTerm” : “"

Mogelijkheid om hier expressies aan toe te voegen. Klik hier om dit binnen een voorbeeld te bekijken.

  • Dossiers met open taken: "searchTerm": "_exists_:task AND dossier.label:2?-MVP-*"

  • Dossiers zonder open taken: "searchTerm": "!exists:(task.active:true)"

  • Conceptdossiers: "searchTerm": "dossier.label:2?-CONCEPT-*"

sort (lijst met objecten)

Lijst met default sorteerregel. De eerst ingevulde regel krijgt de hoogste prioriteit. De eigenschap criterion is het pad naar het veld waarop je wil sorteren. Opgelet: gebruik enkel sorteerbare velden. De orde van sorteren geef je aan via de desc parameter (desc: false is oplopend, desc: true is aflopend). De gebruiker kan de sortering steeds wijzigigen. In het voorbeeld hieronder sorteren we eerst op aanvraagdatum en daarna alfabetisch op naam aanvrager.

CODE
sort: [
    {
      criterion: "document.aanvraag.aanvraagdatum", 
      desc: false
    },
    {
      criterion: "document.aanvraag.naamAanvrager",
      desc: false
    }
  ]

filters (lijst van objecten)

Lijst met filterregels. De eerst ingevulde regel krijgt de hoogste prioriteit. De eigenschap name is het pad naar het veld waarop je wil filteren. De gebruiker kan de filterregels steeds verwijderen of wijzigen. In het voorbeeld hieronder filteren we op de naam Janssens.

CODE
filters: [
    {
      name: "document.aanvraag.naamAanvrager", 
      value: "Janssens"
    }
  ]

Search options

Enkel van toepassing wanneer "allowSearch": true. Zie ook ‘functionaliteiten resultatenlijst’. Gebruik de search options als je in plaats van een standaard zoekvenster een uitgebreid zoekformulier wil configureren.

Eigenschap & Type

Beschrijving & Sample

definition

Definieert de structuur en logica van het uitgebreide zoekformulier.

CODE
"definition": {
  "fields": [
    {
      "name": "ssin",
      "label": "Rijksregisternummer",
      "type": "text",
      "maskConfig": {
        "predefinedMask": "ssin"
      }
    }
  ]
}

Dit volgt dezelfde syntax als een formulierdefinitie. Zo is het ook mogelijk om computed expressions (formulier logica) toe te voegen.

CODE
"computedExpressions": {
        "valid_ssin": "($.rijksregisternummer && $.rijksregisternummer.length > 0) ? (97 - ($.rijksregisternummer.substring(0,9) % 97) - $.rijksregisternummer.substring(9,11) === 0) || (97 - ((2 + $.rijksregisternummer.substring(0,9)) % 97) - $.rijksregisternummer.substring(9,11) === 0) : true"
      },

Ook specifieke validaties op veld niveau zijn mogelijk.

CODE
"conditions": [
 {
  "name": "geldigeEANcodeWoning",
  "level": "error",
  "expression": "($ === '' || $ === undefined) ? true : ((10 - (((5*3 + 4 + 1*3 + 4 + 4*3 + parseInt($[0]) + parseInt($[1])*3 + parseInt($[2]) + parseInt($[3])*3 + parseInt($[4]) + parseInt($[5])*3 + parseInt($[6]) + parseInt($[7])*3 + parseInt($[8]) + parseInt($[9])*3 + parseInt($[10]) + parseInt($[11])*3)) % 10)) % 10) === parseInt($[12])",
  "errorMessage": "Gelieve een geldig EAN-nummer in te geven"
 }
]

txt

queryRules

Koppelt de velden uit de definition aan de effectieve paden in de data-index. Dit is de mapping tussen de velden in het zoekformulier en de kolommen in de resultatenlijst.

CODE
"queryRules": [
  {
    "field": "ssin",
    "paths": ["document.persoon.ssin"]
  }
]

Aggregaties

Lijst van aggregaties

Eigenschap & Type

Beschrijving & Sample

aggregations (lijst van weergave definitie keys en definitie objecten)

Hieronder een sample met slechts één enkele aggregatie.

CODE
"aggregations": [
  {
    "label": "Total amount",
    "key": "amount-total",
    "type": "full-selection",
    "operator": "sum",
    "field": "document.book-reservation-request.amount"
  },
 ]

Voor elke aggregatie afzonderlijk

Eigenschap & Type

Beschrijving & Sample

label (string)

Naam van de aggregatie.

“name” : “Total amount”

key (string)

Unieke ID van de weergave.

“key” : “amount-total”

type

Indien type gedefinieerd, dan is operator en field verplicht.

“type” : “full-selection”

operator

Enkel van toepassing als “type” : “full selection”

Operator die de aggregatie definieert. Mogelijkheden:

field

Enkel van toepassing als “type” : “full selection”

Pad naar het veld met de data waarop je de aggregatie wil uitvoeren.

“field” : “document.book-reservation-request.amount”

action

Berekent op client-side de som van een numeriek veld (document.book-reservation-request.amount) voor alle momenteel geselecteerde records (selectedItems). Als er geen geselecteerde items zijn, wordt 0 teruggegeven.

CODE
"action": "selectedItems 
  ? selectedItems.reduce(function(total, current) { 
      return total + Number(lookup('document.book-reservation-request.amount', current)); 
    }, 0) 
  : 0"

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.