Skip to content

Commit

Permalink
Merge pull request #915 from loculus-project/876-exclude-revocation-s…
Browse files Browse the repository at this point in the history
…equences-in-counts-that-display-in-search-filters

fix(website): apply hidden filters for SearchForm AND search results
  • Loading branch information
bh-ethz committed Feb 8, 2024
2 parents 9684274 + e1e84d8 commit 172e050
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 14 deletions.
3 changes: 2 additions & 1 deletion website/src/components/SearchPage/SearchForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ export const SearchForm: FC<SearchFormProps> = ({
const handleSearch: FormEventHandler<HTMLFormElement> = async (event) => {
event.preventDefault();
setIsLoading(true);
location.href = routes.searchPage(organism, fieldValues, mutationFilter);
const searchableFieldValues = fieldValues.filter((field) => !(field.notSearchable ?? false));
location.href = routes.searchPage(organism, searchableFieldValues, mutationFilter);
};

const resetSearch = async () => {
Expand Down
13 changes: 10 additions & 3 deletions website/src/pages/[organism]/search/index.astro
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
---
import { getData, getReferenceGenomesSequenceNames, getMetadataFilters, getMutationFilter, getOrderBy } from './search';
import {
getData,
getReferenceGenomesSequenceNames,
getMetadataFilters,
getMutationFilter,
getOrderBy,
addHiddenFilters,
} from './search';
import { cleanOrganism } from '../../../components/Navigation/cleanOrganism';
import { DownloadDialog } from '../../../components/SearchPage/DownloadDialog/DownloadDialog';
import { Pagination } from '../../../components/SearchPage/Pagination';
Expand All @@ -8,7 +15,7 @@ import { Table } from '../../../components/SearchPage/Table';
import ErrorBox from '../../../components/common/ErrorBox.astro';
import { getLapisUrl, getRuntimeConfig, getSchema } from '../../../config';
import BaseLayout from '../../../layouts/BaseLayout.astro';
import { pageSize } from '../../../settings';
import { hiddenDefaultSearchFilters, pageSize } from '../../../settings';
const organism = Astro.params.organism!;
const { organism: cleanedOrganism } = cleanOrganism(organism);
Expand All @@ -19,7 +26,7 @@ const getSearchParams = (field: string): string => {
return Astro.url.searchParams.get(field) ?? '';
};
const metadataFilter = getMetadataFilters(getSearchParams, organism);
const metadataFilter = addHiddenFilters(getMetadataFilters(getSearchParams, organism), hiddenDefaultSearchFilters);
const mutationFilter = getMutationFilter(Astro.url.searchParams);
const pageParam = Astro.url.searchParams.get('page');
Expand Down
12 changes: 4 additions & 8 deletions website/src/pages/[organism]/search/search.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ import { ok, Result } from 'neverthrow';
import type { TableSequenceData } from '../../../components/SearchPage/Table.tsx';
import { getReferenceGenomes, getSchema } from '../../../config.ts';
import { LapisClient } from '../../../services/lapisClient.ts';
import { hiddenDefaultSearchFilters } from '../../../settings.ts';
import type { ProblemDetail } from '../../../types/backend.ts';
import type { FilterValue, MetadataFilter, MutationFilter } from '../../../types/config.ts';
import type { MetadataFilter, MutationFilter } from '../../../types/config.ts';
import { type LapisBaseRequest, type OrderBy, type OrderByType, orderByType } from '../../../types/lapis.ts';
import type { ReferenceGenomesSequenceNames } from '../../../types/referencesGenomes.ts';

Expand All @@ -14,24 +13,21 @@ export type SearchResponse = {
totalCount: number;
};

function addHiddenFilters(searchFormFilter: FilterValue[], hiddenFilters: FilterValue[]) {
export function addHiddenFilters(searchFormFilter: MetadataFilter[], hiddenFilters: MetadataFilter[]) {
const searchFormFilterNames = searchFormFilter.map((filter) => filter.name);
const hiddenFiltersToAdd = hiddenFilters.filter((filter) => !searchFormFilterNames.includes(filter.name));
return [...searchFormFilter, ...hiddenFiltersToAdd];
}

export const getData = async (
organism: string,
metadataFilter: FilterValue[],
metadataFilter: MetadataFilter[],
mutationFilter: MutationFilter,
offset: number,
limit: number,
orderBy?: OrderBy,
hiddenDefaultFilters: FilterValue[] = hiddenDefaultSearchFilters,
): Promise<Result<SearchResponse, ProblemDetail>> => {
const filters = addHiddenFilters(metadataFilter, hiddenDefaultFilters);

const metadataSearchFilters = filters
const metadataSearchFilters = metadataFilter
.filter((metadata) => metadata.filterValue !== '')
.reduce((acc: Record<string, string>, metadata) => {
acc[metadata.name] = metadata.filterValue;
Expand Down
9 changes: 7 additions & 2 deletions website/src/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,13 @@ export const GROUP_FIELD = 'group';
export const DATA_USE_TERMS_FIELD = 'dataUseTerms';

export const hiddenDefaultSearchFilters = [
{ name: VERSION_STATUS_FIELD, filterValue: siloVersionStatuses.latestVersion, type: 'string' as const },
{ name: IS_REVOCATION_FIELD, filterValue: 'false', type: 'string' as const },
{
name: VERSION_STATUS_FIELD,
filterValue: siloVersionStatuses.latestVersion,
type: 'string' as const,
notSearchable: true,
},
{ name: IS_REVOCATION_FIELD, filterValue: 'false', type: 'string' as const, notSearchable: true },
];

export const metadataDefaultDownloadDataFormat = 'tsv';

0 comments on commit 172e050

Please sign in to comment.