Skip to main content

Agrupación de APIs

Estado

El estado de agrupación se almacena en la tabla usando la siguiente forma:

export type GroupingState = string[];

export type GroupingTableState = {
grouping: GroupingState;
};

Funciones de Agregación

Las siguientes funciones de agregación están integradas en el núcleo de la tabla:

  • sum
    • Suma los valores de un grupo de filas
  • min
    • Encuentra el valor mínimo de un grupo de filas
  • max
    • Encuentra el valor máximo de un grupo de filas
  • extent
    • Encuentra los valores mínimo y máximo de un grupo de filas
  • mean
    • Encuentra el valor medio/promedio de un grupo de filas
  • median
    • Encuentra el valor mediano de un grupo de filas
  • unique
    • Encuentra los valores únicos de un grupo de filas
  • uniqueCount
    • Encuentra el número de valores únicos de un grupo de filas
  • count
    • Calcula el número de filas en un grupo

Cada función de agrupación recibe:

  • Una función para recuperar los valores hoja de las filas del grupo
  • Una función para recuperar los valores de los hijos inmediatos de las filas del grupo

y debe devolver un valor (generalmente primitivo) para construir el modelo de fila agregado.

Esta es la firma de tipo para cada función de agregación:

export type AggregationFn<TData extends AnyData> = (
getLeafRows: () => Row<TData>[],
getChildRows: () => Row<TData>[],
) => any;

Uso de Funciones de Agregación

Las funciones de agregación pueden usarse/referenciarse/definirse pasando lo siguiente a columnDefinition.aggregationFn:

  • Un string que referencia una función de agregación integrada
  • Un string que referencia funciones de agregación personalizadas proporcionadas a través de la opción tableOptions.aggregationFns
  • Una función proporcionada directamente a la opción columnDefinition.aggregationFn

La lista final de funciones de agregación disponibles para columnDef.aggregationFn utiliza el siguiente tipo:

export type AggregationFnOption<TData extends AnyData> =
| "auto"
| keyof AggregationFns
| BuiltInAggregationFn
| AggregationFn<TData>;

Opciones de Definición de Columna

aggregationFn

aggregationFn?: AggregationFn | keyof AggregationFns | keyof BuiltInAggregationFns

La función de agregación a usar con esta columna.

Opciones:

aggregatedCell

aggregatedCell?: Renderable<
{
table: Table<TData>
row: Row<TData>
column: Column<TData>
cell: Cell<TData>
getValue: () => any
renderValue: () => any
}
>

La celda a mostrar para cada fila de la columna si la celda es un agregado. Si se pasa una función, se le pasará un objeto de propiedades con el contexto de la celda y debe devolver el tipo de propiedad para su adaptador (el tipo exacto depende del adaptador que se esté utilizando).

enableGrouping

enableGrouping?: boolean

Habilita/deshabilita la agrupación para esta columna.

getGroupingValue

getGroupingValue?: (row: TData) => any

Especifica un valor a usar para agrupar filas en esta columna. Si esta opción no se especifica, se usará en su lugar el valor derivado de accessorKey / accessorFn.

API de Columna

aggregationFn

aggregationFn?: AggregationFnOption<TData>

La función de agregación resuelta para la columna.

getCanGroup

getCanGroup: () => boolean;

Devuelve si la columna se puede agrupar o no.

getIsGrouped

getIsGrouped: () => boolean;

Devuelve si la columna está agrupada actualmente o no.

getGroupedIndex

getGroupedIndex: () => number;

Devuelve el índice de la columna en el estado de agrupación.

toggleGrouping

toggleGrouping: () => void

Alterna el estado de agrupación de la columna.

getToggleGroupingHandler

getToggleGroupingHandler: () => () => void

Devuelve una función que alterna el estado de agrupación de la columna. Esto es útil para pasar a la prop onClick de un botón.

getAutoAggregationFn

getAutoAggregationFn: () => AggregationFn<TData> | undefined;

Devuelve la función de agregación inferida automáticamente para la columna.

getAggregationFn

getAggregationFn: () => AggregationFn<TData> | undefined;

Devuelve la función de agregación para la columna.

API de Fila

groupingColumnId

groupingColumnId?: string

Si esta fila está agrupada, este es el ID de la columna por la que está agrupada.

groupingValue

groupingValue?: any

Si esta fila está agrupada, este es el valor único/compartido para el groupingColumnId de todas las filas en este grupo.

getIsGrouped

getIsGrouped: () => boolean;

Devuelve si la fila está agrupada actualmente o no.

getGroupingValue

getGroupingValue: (columnId: string) => unknown;

Devuelve el valor de agrupación para cualquier fila y columna (incluidas las filas hoja).

Opciones de Tabla

aggregationFns

aggregationFns?: Record<string, AggregationFn>

Esta opción le permite definir funciones de agregación personalizadas que pueden ser referenciadas en la opción aggregationFn de una columna por su clave. Ejemplo:

declare module "@tanstack/table-core" {
interface AggregationFns {
myCustomAggregation: AggregationFn<unknown>;
}
}

const column = columnHelper.data("key", {
aggregationFn: "myCustomAggregation",
});

const table = useReactTable({
columns: [column],
aggregationFns: {
myCustomAggregation: (columnId, leafRows, childRows) => {
// devuelve el valor agregado
},
},
});

manualGrouping

manualGrouping?: boolean

Habilita la agrupación manual. Si esta opción se establece en true, la tabla no agrupará automáticamente las filas usando getGroupedRowModel() y, en su lugar, esperará que usted agrupe manualmente las filas antes de pasarlas a la tabla. Esto es útil si está realizando agrupación y agregación en el servidor.

onGroupingChange

onGroupingChange?: OnChangeFn<GroupingState>

Si se proporciona esta función, se llamará cuando cambie el estado de agrupación y se esperará que usted gestione el estado por sí mismo. Puede pasar el estado gestionado de vuelta a la tabla a través de la opción tableOptions.state.grouping.

enableGrouping

enableGrouping?: boolean

Habilita/deshabilita la agrupación para todas las columnas.

getGroupedRowModel

getGroupedRowModel?: (table: Table<TData>) => () => RowModel<TData>

Devuelve el modelo de fila después de que se haya realizado la agrupación, pero sin ir más allá.

groupedColumnMode

groupedColumnMode?: false | 'reorder' | 'remove' // default: `reorder`

Las columnas de agrupación se reordenan automáticamente por defecto al inicio de la lista de columnas. Si prefiere eliminarlas o dejarlas tal cual, establezca el modo apropiado aquí.

API de Tabla

setGrouping

setGrouping: (updater: Updater<GroupingState>) => void

Establece o actualiza el estado state.grouping.

resetGrouping

resetGrouping: (defaultState?: boolean) => void

Reinicia el estado de agrupación a initialState.grouping, o se puede pasar true para forzar un reinicio a un estado en blanco por defecto [].

getPreGroupedRowModel

getPreGroupedRowModel: () => RowModel<TData>;

Devuelve el modelo de fila para la tabla antes de que se haya aplicado cualquier agrupación.

getGroupedRowModel

getGroupedRowModel: () => RowModel<TData>;

Devuelve el modelo de fila para la tabla después de que se haya aplicado la agrupación.

API de Celda

getIsAggregated

getIsAggregated: () => boolean;

Devuelve si la celda está agregada actualmente o no.

getIsGrouped

getIsGrouped: () => boolean;

Devuelve si la celda está agrupada actualmente o no.

getIsPlaceholder

getIsPlaceholder: () => boolean;

Devuelve si la celda es actualmente un marcador de posición o no.