convertRowsToFilter static method
FilteredListFilter<PlutoRow?> ?
convertRowsToFilter(
- List<
PlutoRow?> rows, - List<
PlutoColumn> ? enabledFilterColumns
Converts rows containing filter information into comparison functions.
Implementation
static FilteredListFilter<PlutoRow?>? convertRowsToFilter(
List<PlutoRow?> rows,
List<PlutoColumn>? enabledFilterColumns,
) {
if (rows.isEmpty) {
return null;
}
return (PlutoRow? row) {
bool? flag;
for (var e in rows) {
final filterType = e!.cells[filterFieldType]!.value as PlutoFilterType?;
if (e.cells[filterFieldColumn]!.value == filterFieldAllColumns) {
bool? flagAllColumns;
row!.cells.forEach((key, value) {
var foundColumn = enabledFilterColumns!.firstWhereOrNull(
(element) => element.field == key,
);
if (foundColumn != null) {
flagAllColumns = compareOr(
flagAllColumns,
compareByFilterType(
filterType: filterType!,
base: value.value.toString(),
search: e.cells[filterFieldValue]!.value.toString(),
column: foundColumn,
),
);
}
});
flag = compareAnd(flag, flagAllColumns);
} else {
var foundColumn = enabledFilterColumns!.firstWhereOrNull(
(element) => element.field == e.cells[filterFieldColumn]!.value,
);
if (foundColumn != null) {
flag = compareAnd(
flag,
compareByFilterType(
filterType: filterType!,
base: row!.cells[e.cells[filterFieldColumn]!.value]!.value
.toString(),
search: e.cells[filterFieldValue]!.value.toString(),
column: foundColumn,
),
);
}
}
}
return flag == true;
};
}