diff --git a/datagouv-components/src/components/Search/Filter/OrganizationFacetFilter.vue b/datagouv-components/src/components/Search/Filter/OrganizationFacetFilter.vue new file mode 100644 index 000000000..b39db7388 --- /dev/null +++ b/datagouv-components/src/components/Search/Filter/OrganizationFacetFilter.vue @@ -0,0 +1,46 @@ + + + diff --git a/datagouv-components/src/components/Search/GlobalSearch.vue b/datagouv-components/src/components/Search/GlobalSearch.vue index 5fc2db712..128373ae7 100644 --- a/datagouv-components/src/components/Search/GlobalSearch.vue +++ b/datagouv-components/src/components/Search/GlobalSearch.vue @@ -152,6 +152,13 @@ :loading="searchResultsStatus === 'pending'" :style="{ order: getOrder('type') }" /> + > = Object.fromEntrie // All filter values as a record const allFilters: Record> = { organization: organizationId, + organization_facet: organizationId, organization_badge: organizationType, tag, format, diff --git a/datagouv-components/src/composables/useStableQueryParams.ts b/datagouv-components/src/composables/useStableQueryParams.ts index 30f9ae7bf..1832c592b 100644 --- a/datagouv-components/src/composables/useStableQueryParams.ts +++ b/datagouv-components/src/composables/useStableQueryParams.ts @@ -1,5 +1,5 @@ import { ref, watch, type Ref } from 'vue' -import type { SearchTypeConfig } from '../types/search' +import { SearchFilterAliases, type SearchTypeConfig } from '../types/search' type FilterRefs = Record> @@ -46,7 +46,8 @@ export function useStableQueryParams(options: StableQueryParamsOptions) { if (filterRef) { const value = filterRef.value if (value !== undefined && value !== '' && value !== null) { - params[filterName as string] = value + const paramName = SearchFilterAliases[filterName as string] ?? filterName as string + params[paramName] = value } } } diff --git a/datagouv-components/src/main.ts b/datagouv-components/src/main.ts index 7ef7d6c2e..d9aa17bb9 100644 --- a/datagouv-components/src/main.ts +++ b/datagouv-components/src/main.ts @@ -24,7 +24,7 @@ import type { Weight, WellType } from './types/ui' import type { User, UserReference } from './types/users' import type { Report, ReportSubject, ReportReason } from './types/reports' import type { GlobalSearchConfig, SearchType, SortOption, TagFilterConfig, TagFilterValue, HiddenFilter, DatasetSearchFilters, DataserviceSearchFilters, ReuseSearchFilters, OrganizationSearchFilters, TopicSearchFilters } from './types/search' -import { getDefaultDatasetConfig, getDefaultDataserviceConfig, getDefaultReuseConfig, getDefaultOrganizationConfig, getDefaultTopicConfig, getDefaultGlobalSearchConfig, defaultDatasetSortOptions, defaultDataserviceSortOptions, defaultReuseSortOptions, defaultOrganizationSortOptions } from './types/search' +import { SearchFilterAliases, getDefaultDatasetConfig, getDefaultDataserviceConfig, getDefaultReuseConfig, getDefaultOrganizationConfig, getDefaultTopicConfig, getDefaultGlobalSearchConfig, defaultDatasetSortOptions, defaultDataserviceSortOptions, defaultReuseSortOptions, defaultOrganizationSortOptions } from './types/search' import ActivityList from './components/ActivityList/ActivityList.vue' import UserActivityList from './components/ActivityList/UserActivityList.vue' @@ -227,6 +227,7 @@ export type { } export { + SearchFilterAliases, getDefaultDatasetConfig, getDefaultDataserviceConfig, getDefaultReuseConfig, diff --git a/datagouv-components/src/types/search.ts b/datagouv-components/src/types/search.ts index 511ad3ede..f1de0dccb 100644 --- a/datagouv-components/src/types/search.ts +++ b/datagouv-components/src/types/search.ts @@ -301,12 +301,17 @@ export type SortOption = { label: string } +// UI filter keys that map to a different API param name +export const SearchFilterAliases: Record = { + organization_facet: 'organization', +} + export type DatasetSearchConfig = { class: 'datasets' name?: string hiddenFilters?: HiddenFilter[] - basicFilters?: (keyof DatasetSearchFilters)[] - advancedFilters?: (keyof DatasetSearchFilters)[] + basicFilters?: (keyof DatasetSearchFilters | keyof typeof SearchFilterAliases)[] + advancedFilters?: (keyof DatasetSearchFilters | keyof typeof SearchFilterAliases)[] sortOptions?: SortOption[] tagFilters?: TagFilterConfig[] } @@ -315,8 +320,8 @@ export type DataserviceSearchConfig = { class: 'dataservices' name?: string hiddenFilters?: HiddenFilter[] - basicFilters?: (keyof DataserviceSearchFilters)[] - advancedFilters?: (keyof DataserviceSearchFilters)[] + basicFilters?: (keyof DataserviceSearchFilters | keyof typeof SearchFilterAliases)[] + advancedFilters?: (keyof DataserviceSearchFilters | keyof typeof SearchFilterAliases)[] sortOptions?: SortOption[] tagFilters?: TagFilterConfig[] } @@ -325,8 +330,8 @@ export type ReuseSearchConfig = { class: 'reuses' name?: string hiddenFilters?: HiddenFilter[] - basicFilters?: (keyof ReuseSearchFilters)[] - advancedFilters?: (keyof ReuseSearchFilters)[] + basicFilters?: (keyof ReuseSearchFilters | keyof typeof SearchFilterAliases)[] + advancedFilters?: (keyof ReuseSearchFilters | keyof typeof SearchFilterAliases)[] sortOptions?: SortOption[] tagFilters?: TagFilterConfig[] } @@ -345,8 +350,8 @@ export type TopicSearchConfig = { class: 'topics' name?: string hiddenFilters?: HiddenFilter[] - basicFilters?: (keyof TopicSearchFilters)[] - advancedFilters?: (keyof TopicSearchFilters)[] + basicFilters?: (keyof TopicSearchFilters | keyof typeof SearchFilterAliases)[] + advancedFilters?: (keyof TopicSearchFilters | keyof typeof SearchFilterAliases)[] sortOptions?: SortOption[] tagFilters?: TagFilterConfig[] }