Table widget reference

Table widget: top-level options en gedrag

Deze pagina documenteert alle niet-kolom-specifieke table opties uit de editor: filter JSON, default sort, totals, grouping/comparison/pivot, widget-level value rules en serialisatiegedrag bij save.

Meerdere rijen selecteren en doorgeven aan een actie

Schakel in de tabeleditor geavanceerde instellingen en rijselectie in. Kies Meerdere rijen en stel een stabiel uniek sleutelveld in. Vul een filtersleutel voor de selectie in en kies eventueel doeldatabronnen via de doorzoekbare keuzelijst voor meerdere selecties. Zonder doel wordt de databron van deze widget gebruikt.

Elke wijziging van een selectievakje stuurt direct de geselecteerde sleutels als array naar het ingestelde filter. Het vakje in de tabelkop selecteert maximaal 100 geladen rijen of deselecteert alles. Bij een gedeeltelijke selectie toont het vakje een tussenstand. Alles deselecteren wist het ingestelde filter met null. Er is geen aparte toepassen-knop. Alles selecteren geldt voor geladen rijen, niet alle resultaten op de server. Gebruik detailrijen met unieke sleutels, zonder groepering. Ook op mobiel gebruikt deze modus een tabel. Selectiebediening wordt niet afgedrukt.

{
  "rowSelectionEnabled": true,
  "rowSelectionMode": "multiple",
  "rowSelectionKeyField": "record_id",
  "rowSelectionFilterKey": "selectedRecordIds",
  "rowSelectionTargetDataSourceUids": ["records"]
}

Voor een actieformulier van een Element voegt u een verborgen multi-filter selectedRecordIds met viewOnly toe voor records. Schakel passFilters in op de Element-widget en zet filterSourceUid op records. Het Element leest params.filters.selectedRecordIds en levert het actieformulier. De tabel schrijft zelf geen records.

Het ontvangende Element moet alle geselecteerde ID’s opnieuw opvragen binnen de rechten en verplichte filters van de ingelogde tenant/gebruiker voordat het schrijft. Selectie is geen autorisatie. Een aparte set-filter-actie met value: null kan het verzonden filter wissen.

1. Top-level opties

Table top-level opties
Eerst de globale tabelstructuur, daarna pas kolomdetails: dat voorkomt onnodig heen-en-weer configureren.

Default draftwaarden

  • groupingEnabled=true, comparisonMode=rows, pivotEnabled=false.
  • defaultSort en filter zijn initieel uit/empty.
  • preserveMeasuredColumnOverflow=true voor nieuwe tabelwidgets; gemeten inhoudsbreedtes en horizontaal scrollen staan standaard aan.
  • columns[] start met één lege kolomdraft in de editor.
  • Lege opties worden niet naar JSON geschreven.
Key Type Default Beschrijving
filterobjectnoneExtra widgetfilter bovenop page filters; moet een JSON object zijn.
defaultSort.field, defaultSort.orderstringuitdefaultSort.order toegestane waarden: asc, desc. Sortering op initial render.
totalsboolean/objectuittrue of object met label.
preserveMeasuredColumnOverflowbooleantrue bij nieuwe widgetsBehoudt gemeten inhoudsbreedtes per kolom en gebruikt horizontaal scrollen als de tabel breder is dan de widget. Bestaande widgets zonder deze optie behouden hun huidige gedrag.
hideUngroupedColumnsbooleanfalseVerbergt niet-gegroepeerde kolommen in grouped mode.
drilldownEnabledbooleanfalseActiveert drilldown UI op grouped data.
drilldownOrderstring[][]Geforceerde drilldownvolgorde.
groupingbooleantrueMaster switch voor grouping engine.
groupDimensionsstring[][]Dimensies waarop gegroepeerd wordt.
groupMetricsstring[][]Metrics die geaggregeerd worden.
groupMetricAggregationsrecord{}Per metric toegestane waarden: sum, avg, min, max, count, countDistinct.
comparisonModestringrowsToegestane waarden: rows, columns. Vergelijksets onder elkaar (rows) of naast elkaar (columns).
comparisonChangeColumnsbooleanfalseToont procentuele verschilkolommen. Bij actieve vergelijking kunnen gebruikers via Vergelijkingsinstellingen Rijen/Kolommen kiezen met de gesegmenteerde keuzeknop en Verschil tonen (%) aan- of uitzetten. Indeling en verschilkeuze worden per gebruiker opgeslagen; niet-beschikbare opties worden verborgen; de ingestelde primary/previous-basis blijft behouden.
comparisonChangeBaselinestringprimaryToegestane waarden: primary, previous. Welke set als baseline geldt voor delta.
pivot.enabledbooleanfalseActiveert pivoting.
pivot.modestringcolumnsToegestane waarden: columns, transpose. Kolompivot of transposed matrix.
pivot.dimensionstring""Verplicht wanneer mode=columns.
pivot.metricsstring[][]Metrics die in pivot output komen.
pivot.fillValueanynoneParser ondersteunt number/bool/null/string input uit editor.
pivot.emptyLabelstring""Label voor lege dimensiewaarden.
pivot.transposeLabelHeaderstringMetricLabel-header in transpose mode.
pivot.transposeValueHeaderstringValueValue-header in transpose mode.
valueRulesarray[]Widget-level waarde replacements.
columnsarray[]Kolomconfiguratie (uitgewerkt op aparte pagina).

2. Validatie en save-gedrag

Filter JSON

  • filterText moet parsebaar zijn als JSON object.
  • Array of primitive waarde geeft fout: Filter must be a JSON object.
  • Bij fout wordt save afgebroken met Invalid table filter JSON.

Gebruik in Vergelijkingsinstellingen de schakelaar Rijen / Kolommen voor de vergelijkingsindeling. Het selectievakje Verschil tonen (%) verschijnt alleen bij Kolommen; de voorkeur blijft behouden als je tijdelijk naar Rijen schakelt.

Pivot guardrails

  • Bij pivot.enabled=true + mode=columns is pivot.dimension verplicht.
  • Zonder dimensie stopt save met een duidelijke foutmelding.
  • pivot.metrics wordt deduped met een set.

Comparison nuances

  • comparisonMode=columns wordt alleen opgeslagen als grouping aan staat.
  • comparisonChangeBaseline=previous wordt alleen gezet als change columns actief zijn.
  • Zonder change columns blijft baseline impliciet primary.

Output minimalisatie

  • Lege/standaardwaarden worden weggelaten uit options JSON.
  • Als geen enkele setting gezet is, geeft builder null terug.
  • Dit houdt opgeslagen page JSON compact en diffs schoon.

3. Voorbeeld top-level table JSON

{
  "filter": { "status": "open" },
  "defaultSort": { "field": "created_at", "order": "desc" },
  "preserveMeasuredColumnOverflow": true,
  "totals": { "enabled": true, "label": "Totaal" },
  "groupDimensions": ["region"],
  "groupMetrics": ["revenue"],
  "groupMetricAggregations": {
    "revenue": "sum"
  },
  "comparisonMode": "columns",
  "comparisonChangeColumns": true,
  "comparisonChangeBaseline": "previous",
  "pivot": {
    "enabled": true,
    "mode": "columns",
    "dimension": "month",
    "metrics": ["revenue"],
    "fillValue": 0,
    "emptyLabel": "Onbekend"
  },
  "valueRules": [
    {
      "value": "critical",
      "matchMode": "exact",
      "replacement": "Kritiek",
      "replacementType": "text"
    }
  ]
}

Vergelijk met: Eerste, Laatste, Vorige of Volgende kiest de referentie voor verschillen in de getoonde setvolgorde. Aangrenzende vergelijkingen springen niet terug; zonder referentie is er geen verschil. Zichtbaar wanneer verschillen aanstaan in kolommenmodus, opgeslagen per gebruiker. De standaard blijft laatste; de oude tabelinstelling Vorige behoudt het bestaande gedrag met de volgende kolom totdat je dit overschrijft.