export function filterExperiments()

in experimenter/experimenter/nimbus-ui/src/components/PageHome/filterExperiments.ts [306:394]


export function filterExperiments(
  experiments: getAllExperiments_experiments[],
  filterState: FilterValue,
) {
  let filteredExperiments = [...experiments];
  for (const key of filterValueKeys) {
    // Verbose switch that seems to make types happier
    switch (key) {
      case "owners":
        filteredExperiments = filterExperimentsByOptions<"owners">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "applications":
        filteredExperiments = filterExperimentsByOptions<"applications">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "allFeatureConfigs":
        filteredExperiments = filterExperimentsByOptions<"allFeatureConfigs">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "firefoxVersions":
        filteredExperiments = filterExperimentsByOptions<"firefoxVersions">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "channels":
        filteredExperiments = filterExperimentsByOptions<"channels">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "types":
        filteredExperiments = filterExperimentsByOptions<"types">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "projects":
        filteredExperiments = filterExperimentsByOptions<"projects">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "targetingConfigs":
        filteredExperiments = filterExperimentsByOptions<"targetingConfigs">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "takeaways":
        filteredExperiments = filterExperimentsByOptions<"takeaways">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "qaStatus":
        filteredExperiments = filterExperimentsByOptions<"qaStatus">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
      case "subscribers":
        filteredExperiments = filterExperimentsByOptions<"subscribers">(
          filterState[key],
          experimentFilters[key],
          filteredExperiments,
        );
        break;
    }
  }
  return filteredExperiments;
}