Aller au contenu

aggFunc

Avec les groupes de lignes : ce qu’un groupe affiche dans cette colonne.

TypeAggFuncName | AggFn<V>
Par défautnon défini
Modifiable en direct (update())Oui — en redonnant les colonnes (update({ columns }))
Déclaré danspackages/core/src/columns/defs.ts

Un nom fourni — 'sum', 'avg', 'min', 'max', 'count', 'first', 'last' — ou votre fonction des valeurs du groupe. count compte les lignes du groupe ; les autres sautent les valeurs vides. Une fonction reçoit les valeurs dans l’ordre du groupe (les vides valant null) et { column, level } (level null pour le total général) ; ce qu’elle renvoie est affiché. Elle doit être pure.

Il faut la fonction grouping(). L’option aggFuncs du groupement l’emporte sur lui. Pour la ligne de totaux d’une grille sans groupes, voir total.

import { createGrid, type GridMessages } from '@dzgrid/dom';
import { grouping } from '@dzgrid/dom/grouping';
import { FR_GROUP } from '@dzgrid/dom/locales/fr-group';
import { FR } from '@dzgrid/dom/locales/fr';
type Sale = { id: string; market: string; fruit: string; crates: number };
const messages: GridMessages = { ...FR, text: { ...FR.text, ...FR_GROUP.text } };
createGrid<Sale>(document.getElementById('ventes')!, {
rows: [{ id: 's1', market: 'Port', fruit: 'Prunes', crates: 12 }],
columns: [
{ id: 'market', header: 'Marché' },
{ id: 'fruit', header: 'Fruit', aggFunc: 'count' },
{ id: 'crates', header: 'Cagettes', type: 'number', aggFunc: 'sum' },
],
getRowId: (r) => r.id,
messages,
features: [grouping({ by: ['market'] })],
});