diff --git a/apps/datahub/src/app/home/home-header/home-header.component.spec.ts b/apps/datahub/src/app/home/home-header/home-header.component.spec.ts index 0982f0315f..5c8ba2afb4 100644 --- a/apps/datahub/src/app/home/home-header/home-header.component.spec.ts +++ b/apps/datahub/src/app/home/home-header/home-header.component.spec.ts @@ -34,7 +34,6 @@ jest.mock('@geonetwork-ui/util/app-config', () => { filters: { publisher: ['DREAL'] }, }, { - sort: 'title', name: 'filterCarto', filters: { q: 'Cartographie' }, }, @@ -61,6 +60,7 @@ class routerFacadeMock { class searchFacadeMock { setFavoritesOnly = jest.fn() setSortBy = jest.fn() + sortBy$ = new BehaviorSubject(['desc', 'createDate']) } class searchServiceMock { @@ -68,6 +68,7 @@ class searchServiceMock { setSearch = jest.fn() setSortBy = jest.fn() setSortAndFilters = jest.fn() + setFilters = jest.fn() } class AuthServiceMock { @@ -233,17 +234,32 @@ describe('HeaderComponent', () => { const allBadges = fixture.debugElement.queryAll(By.css('.badge-btn')) expect(allBadges.length).toBe(4) }) - beforeEach(() => { - const firstCustomBadge = fixture.debugElement.queryAll( - By.css('.badge-btn') - )[2] - firstCustomBadge.nativeElement.click() + describe('when sort is defined', () => { + beforeEach(() => { + const firstCustomBadge = fixture.debugElement.queryAll( + By.css('.badge-btn') + )[2] + firstCustomBadge.nativeElement.click() + }) + it('should redirect correctly', () => { + expect(searchService.setSortAndFilters).toHaveBeenCalledWith( + { thisIs: 'a fake filter' }, + SortByEnum.CREATE_DATE + ) + }) }) - it('should redirect correctly', () => { - expect(searchService.setSortAndFilters).toHaveBeenCalledWith( - { thisIs: 'a fake filter' }, - SortByEnum.CREATE_DATE - ) + describe('when sort is not defined', () => { + beforeEach(() => { + const secondCustomBadge = fixture.debugElement.queryAll( + By.css('.badge-btn') + )[3] + secondCustomBadge.nativeElement.click() + }) + it('should redirect correctly', () => { + expect(searchService.setFilters).toHaveBeenCalledWith({ + thisIs: 'a fake filter', + }) + }) }) }) diff --git a/apps/datahub/src/app/home/home-header/home-header.component.ts b/apps/datahub/src/app/home/home-header/home-header.component.ts index db8c8e7954..ce3093a834 100644 --- a/apps/datahub/src/app/home/home-header/home-header.component.ts +++ b/apps/datahub/src/app/home/home-header/home-header.component.ts @@ -20,7 +20,7 @@ import { import { SortByEnum, SortByField } from '@geonetwork-ui/common/domain/search' import { map } from 'rxjs/operators' import { ROUTER_ROUTE_NEWS } from '../../router/constants' -import { lastValueFrom } from 'rxjs' +import { firstValueFrom, lastValueFrom } from 'rxjs' import { CatalogRecord } from '@geonetwork-ui/common/domain/record' import { sortByFromString } from '@geonetwork-ui/util/shared' @@ -84,9 +84,11 @@ export class HomeHeaderComponent { customSearchParameters.filters ) ) - this.searchService.setSortAndFilters( - searchFilters, - sortByFromString(customSearchParameters.sort) - ) + if (customSearchParameters.sort) { + const sortBy = sortByFromString(customSearchParameters.sort) + this.searchService.setSortAndFilters(searchFilters, sortBy) + } else { + this.searchService.setFilters(searchFilters) + } } } diff --git a/conf/default.toml b/conf/default.toml index 44903cbe7f..830ec315c1 100644 --- a/conf/default.toml +++ b/conf/default.toml @@ -75,7 +75,7 @@ background_color = "#fdfbff" # One or several search presets can be defined here; every search preset is composed of: # - a name (which can be a translation key) -# - a sort criteria: either `createDate`, `userSavedCount` or `_score` (prepend with `-` for descending sort) +# - a sort criteria: either `createDate`, `userSavedCount` or `_score` (prepend with `-` for descending sort) (optionnal) # - filters which can be expressed like so: # [[search_preset]] # name = 'filterByName' @@ -88,6 +88,7 @@ background_color = "#fdfbff" # filters.publicationYear = ['2023', '2022'] # filters.isSpatial = ['yes'] # filters.license = ['unknown'] +# sort = 'createDate' # [[search_preset]] # name = 'otherFilterName' # filters.q = 'Other Full text search'