sortBy method

Datacat sortBy(
  1. String columnName, {
  2. bool ascending = true,
})

Returns a new Datacat sorted by the given column.

Implementation

Datacat sortBy(String columnName, {bool ascending = true}) {
  int index = columns.indexOf(columnName);
  if (index == -1) throw ArgumentError('Column "$columnName" not found.');
  List<List<dynamic>> sortedRows = List.from(rows);
  sortedRows.sort((a, b) {
    var aVal = a[index];
    var bVal = b[index];
    int cmp;
    if (aVal is Comparable && bVal is Comparable) {
      cmp = aVal.compareTo(bVal);
    } else {
      cmp = aVal.toString().compareTo(bVal.toString());
    }
    return ascending ? cmp : -cmp;
  });
  return Datacat(columns: List.from(columns), rows: sortedRows);
}