in current_results/lib/src/slice.dart [240:278]
List<Result> getSortedResults(String prefix, List<String> configurations,
Set<String> experimentFilters, PageStart pageStart,
{int needed}) {
final prefixResult = Result.nameOnly(prefix);
var startResult;
if (pageStart == null || pageStart.test.compareTo(prefixResult.name) <= 0) {
startResult = prefixResult;
} else if (pageStart.test.startsWith(prefixResult.name)) {
startResult = Result.nameOnly(pageStart.test);
} else {
return [];
}
var results = <Result>[];
for (final configuration in configurations) {
var configurationRange = getResultRange(
_stored[configuration], startResult, prefixResult, experimentFilters);
if (configurationRange.isEmpty) continue;
if (pageStart != null &&
configurationRange.first.name == pageStart.test &&
configuration.compareTo(pageStart.configuration) <= 0) {
configurationRange = configurationRange.skip(1);
if (configurationRange.isEmpty) continue;
}
if (results.isEmpty ||
results.last.name.compareTo(configurationRange.first.name) <= 0) {
// Optimization
results.addAll(configurationRange.take(needed - results.length));
} else {
results =
merge(results, configurationRange, (Result result) => result.name)
.take(needed)
.toList();
}
}
return results;
}