sort method

  1. @override
void sort({
  1. required PlutoColumn column,
  2. required FilteredList<PlutoRow> rows,
  3. required int compare(
    1. PlutoRow,
    2. PlutoRow
    ),
})
override

Handle sorting of grouped rows.

Implementation

@override
void sort({
  required PlutoColumn column,
  required FilteredList<PlutoRow> rows,
  required int Function(PlutoRow, PlutoRow) compare,
}) {
  if (rows.originalList.isEmpty) return;

  final depth = _columnDepth(column);

  if (depth == 0) {
    rows.sort(compare);
    return;
  }

  final children = PlutoRowGroupHelper.iterateWithFilter(
    rows.originalList,
    filter: (r) => r.type.isGroup,
    childrenFilter: (r) => _isFirstChildGroup(r)
        ? r.type.group.children.originalList.iterator
        : null,
  );

  for (final child in children) {
    if (_firstChildDepth(child) == depth) {
      child.type.group.children.sort(compare);
    }
  }
}