Skip to content

Implement Grouping #11

@malonecj

Description

@malonecj

Grouping is a key feature for the grid, and fills a lot of use cases for us. It is also several things to different people. We see this as:

Grouping

Choose a field (or fields) to group on, and then show the grid with expand and collapse based on this.
Further enhancements include allowing a way to also specify metrics, so that we can display summary info, whether thats number of records, or avg/sum/min/max

Key issues

  • Means that the Grid needs to have a view of the entire data set, so this will need to be partly done inside ReactDataGrid, and partly in a data view adapter in front of the rowGetter
  • Makes sorting and filtering more complex

Child rows

Using the same headers, but having expand and collapse on child items

Key Considerations

  • How would we express this in the row data. Should it be a different prop, getter, or just a simple convention (ie if(row.children) { .. })?
  • Shouldnt affect sort / filter. Though filter on children might be nice to have?
  • Should this be n-dimension? using row.children should in theory be easy enough
  • Will mean some state to track expand / collapse, and fundamental changes to equations on grid metrics (esp hieght)
  • Need to consider how this works alongside frozen cols

Sub Grids

Having the ability to have master / detail tables, where the subgrid is entirely independent in structure (ie it has different headers, formatters, etc)
In theory this is an extension of child rows, but rather than row.children we have row.subGrids or similar

Key considerations

  • Should be an extension of child rows, and so have the same considerations
  • Need to ensure we stay performant
  • do we keep the same convention (ie row.children) and then just sniff if these are rows, or a grid? Or be explicit (row.children vs row.subGrids)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions