in experimenter/experimenter/nimbus-ui/src/components/PageHome/filterExperiments.ts [106:196]
export function getFilterValueFromParams(
options: FilterOptions,
params: URLSearchParams,
): FilterValue {
const filterValue: FilterValue = {};
for (const key of filterValueKeys) {
const values = params.get(key)?.split(",");
if (!values) continue;
// Verbose switch that seems to make types happier
switch (key) {
case "owners":
filterValue[key] = selectFilterOptions<"owners">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "applications":
filterValue[key] = selectFilterOptions<"applications">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "allFeatureConfigs":
filterValue[key] = selectFilterOptions<"allFeatureConfigs">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "firefoxVersions":
filterValue[key] = selectFilterOptions<"firefoxVersions">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "channels":
filterValue[key] = selectFilterOptions<"channels">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "types":
filterValue[key] = selectFilterOptions<"types">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "projects":
filterValue[key] = selectFilterOptions<"projects">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "targetingConfigs":
filterValue[key] = selectFilterOptions<"targetingConfigs">(
options[key],
optionIndexKeys[key],
values,
);
break;
case "takeaways":
filterValue[key] = selectFilterOptions<"takeaways">(
options[key],
optionIndexKeys[key],
values as string[],
);
break;
case "qaStatus":
filterValue[key] = selectFilterOptions<"qaStatus">(
options[key],
optionIndexKeys[key],
values as string[],
);
break;
case "subscribers":
filterValue[key] = selectFilterOptions<"subscribers">(
options[key],
optionIndexKeys[key],
values as string[],
);
break;
}
}
return filterValue;
}