# Grouping
URL: https://pro.rv-grid.com/api/grouping/
Source: src/content/docs/api/grouping.md
### `getGroupingData`

Extracts grouping data from the store for a specific row

**@param** store - The data store
 *
**@param** itemIndex - The index of the current item
 *
**@param** currentDepth - The current depth of the grouping
 *
**@param** columnProp - The column property to aggregate
 *
**@param** aggregator - The aggregation function to apply
 *
**@returns** An object containing the count, values, and aggregation result

```ts
export function getGroupingData(;
```

---

### `GroupingAggregationTemplate`

The `GroupingAggregationTemplate` type defines the structure of aggregation functions
that can be used for grouping in a RevoGrid.

```ts
/**
 * The `GroupingAggregationTemplate` type defines the structure of aggregation functions
 * that can be used for grouping in a RevoGrid.
 */
export type GroupingAggregationTemplate = {
  aggregations?: { [key: string]: (values: any[]) => any };
}
```

---

### `GroupingData`

The `GroupingData` type defines the structure of data returned by the getGroupingData function

```ts
/**
 * The `GroupingData` type defines the structure of data returned by the getGroupingData function
 */
export type GroupingData = {
  count: number;
  values: DataType[];
  aggregationValue: any;
};
```

---

### `groupingAggregation`

The `groupingAggregation` function is a template for creating custom aggregation functions
that can be used for grouping in a RevoGrid.

This function takes a template object with an optional `aggregations` property, which is a
key-value pair where the key is the column property name and the value is an aggregation function.
The aggregation functions receive an array of values and return a single aggregated result.

### Example
```typescript
const aggregations = {
  'name': (values: string[]) => values.join(', ')
}

const template: GroupLabelTemplateFunc = (h, props) => {
  return groupingAggregation(h, props, aggregations);
}

const grid = document.createElement('revo-grid');
grid.columns = [
  { prop: 'name', name: 'Name', template: template }
]
```

```ts
groupingAggregation: GroupLabelTemplateFunc;
```
