Widget reference

KPI widget: volledige instelling reference

KPI is de single-value widget met aggregation, formatting, icon styling en meerdere comparison-bronnen (filter sets, static, field, view).

1. Waarde en aggregatie

KPI widget editor
  • De editor combineert waardeveld, aggregatie, vergelijking en formattering in één flow.
  • Zorg dat de hoofdwaarde eerst klopt voordat je vergelijking of styling toevoegt.
  • Gebruik vergelijkopties alleen als de baseline ook functioneel uitlegbaar is voor eindgebruikers.
Een KPI wordt pas betrouwbaar wanneer waarde, baseline en formattering samen logisch zijn.

Defaults

  • agg=sum, valueFormat=number, digitsInfo=1.0-1.
  • Comparison staat standaard aan met comparisonSource=filterSets.
  • comparisonMode=difference, comparisonValueAgg=sum.
Key Type Beschrijving
valueFieldstringBronveld voor KPI (verplicht).
aggsum/avg/min/max/count/countDistinctAggregatie op valueField.
filterobjectWidget filter JSON; moet object zijn.
kpiLabelstringLabel onder/naast waarde.
icon, iconColorstringPrimeIcon class en kleur.

2. Formattering en styling

Instelling Waarden Uitleg
valueFormatstring/number/decimal/currency/percent/date/datetime/timeOutputformaat van KPI waarde.
digitsInfostringNumerieke precisie voor number/decimal/currency/percent.
currencyCode, currencyDisplaystringValuta instelling voor currency format.
dateFormatstringDatumweergave bij date/datetime/time format.
prefix, suffixstringTekst voor/na KPI waarde.

3. Trend onder de KPI

KPI-widgets kunnen optioneel een compacte trendgrafiek onder de waarde en compare-labels tonen. Deze trend gebruikt dezelfde datasource en filters als de KPI, maar heeft zijn eigen groeps- en datumguard-instellingen.

Key Type Beschrijving
trend.enabledbooleanSchakelt de compacte trendgrafiek in.
trend.chartTypeline/area/barVisualisatievorm van de trend.
trend.labelFieldstringGroeperingsveld voor de x-as, meestal een datumveld.
trend.valueFieldstringOptioneel waardeveld; valt terug op valueField van de KPI.
trend.aggsum/avg/min/max/count/countDistinctAggregatie voor de trendpunten.
trend.sortDirectionasc/descSorteervolgorde van de gegroepeerde punten.
trend.limitnumberOptioneel maximum aantal punten in de trend.
trend.minDateRangeDaysnumberVergroot alleen voor de trend de actieve ...From-datum backward als het geselecteerde datumbereik te klein is.
trend.colorstringOptionele kleur override voor de trendgrafiek.

Gedrag van minimaal datumbereik

  • De hoofd-KPI blijft de exacte actieve filters gebruiken.
  • Alleen de trendquery kan extra dagen terugpakken via trend.minDateRangeDays.
  • Dit is handig wanneer de gebruiker bijvoorbeeld op gisteren filtert, maar je toch een kleine 7-daagse of 30-daagse trend wilt tonen.

4. Comparison settings (alle bronnen)

Key Beschrijving Wanneer verplicht
comparisonEnabledMaster toggle voor compare badge.Niet verplicht.
comparisonSourcefilterSets, static, field, view.Als comparison aan staat.
comparisonModedifference, percent, both.Optioneel, default difference.
comparisonStaticValueVaste baseline.Bij comparisonSource=static.
comparisonValueFieldVeld voor vergelijking.Bij field of view.
comparisonValueAggsum/avg/min/max/count/countDistinctBij field of view.
comparisonViewUidView identifier als baseline bron.Bij comparisonSource=view.
comparisonDateFilterKeyDate-range filterkey fallback.Alleen bij filterSets.
comparisonShowFiltersToont actieve filterwaarden in compare tag.Optioneel.
comparisonLabelBefore, comparisonLabelAfterTekst voor/na delta.Optioneel.
comparisonReverseColorsWisselt groen/rood logica om.Optioneel.

Validatiegedrag

  • Zonder valueField kan de widget niet opgeslagen worden.
  • Bij comparisonSource=static is een numerieke static value vereist.
  • Bij comparisonSource=view is comparisonViewUid verplicht.
  • Bij comparisonSource=field/view valt comparisonValueField terug op valueField als leeg.

5. Voorbeeld KPI options JSON

{
  "valueField": "revenue",
  "agg": "sum",
  "valueFormat": "currency",
  "currencyCode": "EUR",
  "currencyDisplay": "symbol",
  "digitsInfo": "1.0-0",
  "kpiLabel": "Omzet",
  "icon": "pi pi-chart-line",
  "iconColor": "#0ea5e9",
  "comparisonSource": "view",
  "comparisonViewUid": "revenue_previous_period",
  "comparisonValueField": "revenue",
  "comparisonValueAgg": "sum",
  "comparisonMode": "both",
  "comparisonLabelBefore": "vs",
  "comparisonLabelAfter": "vorige periode",
  "trend": {
    "enabled": true,
    "chartType": "area",
    "labelField": "order_date",
    "valueField": "revenue",
    "agg": "sum",
    "sortDirection": "asc",
    "limit": 30,
    "minDateRangeDays": 7
  }
}