sort method
Sort data
according to the settings in filters.
The return value is an object different from data
.
data
をfiltersの設定に従ってソートします。
戻り値はdata
とは違うオブジェクトが返されます。
Implementation
List<MapEntry<String, DynamicMap>> sort(
List<MapEntry<String, DynamicMap>> data,
) {
if (data.isEmpty) {
return data;
}
final order = filters.firstWhereOrNull((item) =>
item.type == ModelQueryFilterType.orderByAsc ||
item.type == ModelQueryFilterType.orderByDesc);
if (order == null) {
return data;
}
switch (order.type) {
case ModelQueryFilterType.orderByAsc:
final key = order.key;
if (key.isEmpty) {
return data;
}
return data.sortTo((a, b) => _compare(a.value[key], b.value[key]));
case ModelQueryFilterType.orderByDesc:
final key = order.key;
if (key.isEmpty) {
return data;
}
return data.sortTo((a, b) => _compare(b.value[key], a.value[key]));
default:
return data;
}
}