average static method

num average({
  1. required Iterable<PlutoRow> rows,
  2. required PlutoColumn column,
  3. PlutoAggregateFilter? filter,
})

Implementation

static num average({
  required Iterable<PlutoRow> rows,
  required PlutoColumn column,
  PlutoAggregateFilter? filter,
}) {
  if (column.type is! PlutoColumnTypeWithNumberFormat ||
      !_hasColumnField(rows: rows, column: column)) {
    return 0;
  }

  final numberColumn = column.type as PlutoColumnTypeWithNumberFormat;

  final foundItems = filter != null
      ? rows.where((row) => filter(row.cells[column.field]!))
      : rows;

  final Iterable<num> numbers = foundItems.map(
    (e) => e.cells[column.field]!.value,
  );

  return numberColumn.toNumber(numberColumn.applyFormat(numbers.average));
}