List getSortedResults()

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;
  }