diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.html b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.html
index 8550b04182..114837ce65 100644
--- a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.html
+++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.html
@@ -21,7 +21,7 @@
(facetCount | async)"
(click)="showMore()">{{"search.filters.filter.show-more"
| translate}}
- 1" (click)="showLess()">{{"search.filters.filter.show-less"
+ 1" (click)="showFirstPageOnly()">{{"search.filters.filter.show-less"
| translate}}
diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts
index 83ed1ca8cb..08ee0fd840 100644
--- a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.spec.ts
@@ -55,8 +55,10 @@ describe('SearchFacetFilterComponent', () => {
getQueryParamsWithout: (paramName: string, filterValue: string) => '',
getPage: (paramName: string) => page,
/* tslint:disable:no-empty */
- increasePage: (filterName: string) => {},
- decreasePage: (filterName: string) => {},
+ incrementPage: (filterName: string) => {
+ },
+ resetPage: (filterName: string) => {
+ },
/* tslint:enable:no-empty */
searchLink: '/search',
}
@@ -156,12 +158,23 @@ describe('SearchFacetFilterComponent', () => {
describe('when the showMore method is called', () => {
beforeEach(() => {
- spyOn(filterService, 'increasePage');
+ spyOn(filterService, 'incrementPage');
comp.showMore();
});
- it('should call increasePage on the filterService with the correct filter parameter name', () => {
- expect(filterService.increasePage).toHaveBeenCalledWith(mockFilterConfig.name)
+ it('should call incrementPage on the filterService with the correct filter parameter name', () => {
+ expect(filterService.incrementPage).toHaveBeenCalledWith(mockFilterConfig.name)
+ });
+ });
+
+ describe('when the showFirstPageOnly method is called', () => {
+ beforeEach(() => {
+ spyOn(filterService, 'resetPage');
+ comp.showFirstPageOnly();
+ });
+
+ it('should call resetPage on the filterService with the correct filter parameter name', () => {
+ expect(filterService.resetPage).toHaveBeenCalledWith(mockFilterConfig.name)
});
});
diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts
index ccdab52c57..99501f346a 100644
--- a/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts
@@ -57,11 +57,11 @@ export class SearchFacetFilterComponent implements OnInit {
}
showMore() {
- this.filterService.increasePage(this.filterConfig.name);
+ this.filterService.incrementPage(this.filterConfig.name);
}
- showLess() {
- this.filterService.decreasePage(this.filterConfig.name);
+ showFirstPageOnly() {
+ this.filterService.resetPage(this.filterConfig.name);
}
getCurrentPage(): Observable {
diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.actions.ts b/src/app/+search-page/search-filters/search-filter/search-filter.actions.ts
index eb5f0bd959..5c9803c7a9 100644
--- a/src/app/+search-page/search-filters/search-filter/search-filter.actions.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-filter.actions.ts
@@ -17,7 +17,8 @@ export const SearchFilterActionTypes = {
INITIAL_EXPAND: type('dspace/search-filter/INITIAL_EXPAND'),
TOGGLE: type('dspace/search-filter/TOGGLE'),
DECREMENT_PAGE: type('dspace/search-filter/DECREMENT_PAGE'),
- INCREMENT_PAGE: type('dspace/search-filter/INCREMENT_PAGE')
+ INCREMENT_PAGE: type('dspace/search-filter/INCREMENT_PAGE'),
+ RESET_PAGE: type('dspace/search-filter/RESET_PAGE')
};
export class SearchFilterAction implements Action {
@@ -55,4 +56,8 @@ export class SearchFilterDecrementPageAction extends SearchFilterAction {
export class SearchFilterIncrementPageAction extends SearchFilterAction {
type = SearchFilterActionTypes.INCREMENT_PAGE;
}
+
+export class SearchFilterResetPageAction extends SearchFilterAction {
+ type = SearchFilterActionTypes.RESET_PAGE;
+}
/* tslint:enable:max-classes-per-file */
diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.reducer.spec.ts b/src/app/+search-page/search-filters/search-filter/search-filter.reducer.spec.ts
index f2f5421c74..8fbfbf2e65 100644
--- a/src/app/+search-page/search-filters/search-filter/search-filter.reducer.spec.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-filter.reducer.spec.ts
@@ -4,7 +4,7 @@ import {
SearchFilterInitialCollapseAction,
SearchFilterInitialExpandAction,
SearchFilterToggleAction,
- SearchFilterDecrementPageAction
+ SearchFilterDecrementPageAction, SearchFilterResetPageAction
} from './search-filter.actions';
import { filterReducer } from './search-filter.reducer';
@@ -154,4 +154,12 @@ describe('filterReducer', () => {
const newState = filterReducer(state, action);
expect(newState[filterName1].page).toEqual(1);
});
+
+ it('should reset the page to 1 for the specified filter in response to the RESET_PAGE action', () => {
+ const state = {};
+ state[filterName1] = { filterCollapsed: true, page: 20 };
+ const action = new SearchFilterResetPageAction(filterName1);
+ const newState = filterReducer(state, action);
+ expect(newState[filterName1].page).toEqual(1);
+ });
});
diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.reducer.ts b/src/app/+search-page/search-filters/search-filter/search-filter.reducer.ts
index fb1dc6802b..9b1a084462 100644
--- a/src/app/+search-page/search-filters/search-filter/search-filter.reducer.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-filter.reducer.ts
@@ -77,6 +77,15 @@ export function filterReducer(state = initialState, action: SearchFilterAction):
}
});
+ }
+ case SearchFilterActionTypes.RESET_PAGE: {
+ return Object.assign({}, state, {
+ [action.filterName]: {
+ filterCollapsed: state[action.filterName].filterCollapsed,
+ page: 1
+ }
+ });
+
}
case SearchFilterActionTypes.TOGGLE: {
diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.service.spec.ts b/src/app/+search-page/search-filters/search-filter/search-filter.service.spec.ts
index b7e0c4ed90..7371e55ee8 100644
--- a/src/app/+search-page/search-filters/search-filter/search-filter.service.spec.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-filter.service.spec.ts
@@ -4,7 +4,8 @@ import { Store } from '@ngrx/store';
import {
SearchFilterCollapseAction, SearchFilterDecrementPageAction, SearchFilterExpandAction,
SearchFilterIncrementPageAction,
- SearchFilterInitialCollapseAction, SearchFilterInitialExpandAction, SearchFilterToggleAction
+ SearchFilterInitialCollapseAction, SearchFilterInitialExpandAction, SearchFilterResetPageAction,
+ SearchFilterToggleAction
} from './search-filter.actions';
import { SearchFiltersState } from './search-filter.reducer';
import { SearchFilterConfig } from '../../search-service/search-filter-config.model';
@@ -95,7 +96,7 @@ describe('SearchFilterService', () => {
describe('when the decreasePage method is triggered', () => {
beforeEach(() => {
- service.decreasePage(mockFilterConfig.name);
+ service.decrementPage(mockFilterConfig.name);
});
it('SearchFilterDecrementPageAction should be dispatched to the store', () => {
@@ -106,7 +107,7 @@ describe('SearchFilterService', () => {
describe('when the increasePage method is triggered', () => {
beforeEach(() => {
- service.increasePage(mockFilterConfig.name);
+ service.incrementPage(mockFilterConfig.name);
});
it('SearchFilterCollapseAction should be dispatched to the store', () => {
@@ -115,6 +116,17 @@ describe('SearchFilterService', () => {
});
+ describe('when the resetPage method is triggered', () => {
+ beforeEach(() => {
+ service.resetPage(mockFilterConfig.name);
+ });
+
+ it('SearchFilterDecrementPageAction should be dispatched to the store', () => {
+ expect(store.dispatch).toHaveBeenCalledWith(new SearchFilterResetPageAction(mockFilterConfig.name));
+ });
+
+ });
+
describe('when the expand method is triggered', () => {
beforeEach(() => {
service.expand(mockFilterConfig.name);
diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.service.ts b/src/app/+search-page/search-filters/search-filter/search-filter.service.ts
index a35e0ded76..f3efc19b86 100644
--- a/src/app/+search-page/search-filters/search-filter/search-filter.service.ts
+++ b/src/app/+search-page/search-filters/search-filter/search-filter.service.ts
@@ -7,7 +7,7 @@ import {
SearchFilterDecrementPageAction, SearchFilterExpandAction,
SearchFilterIncrementPageAction,
SearchFilterInitialCollapseAction,
- SearchFilterInitialExpandAction,
+ SearchFilterInitialExpandAction, SearchFilterResetPageAction,
SearchFilterToggleAction
} from './search-filter.actions';
import { hasValue, } from '../../../shared/empty.util';
@@ -91,13 +91,17 @@ export class SearchFilterService {
this.store.dispatch(new SearchFilterInitialExpandAction(filterName));
}
- public decreasePage(filterName: string): void {
+ public decrementPage(filterName: string): void {
this.store.dispatch(new SearchFilterDecrementPageAction(filterName));
}
- public increasePage(filterName: string): void {
+ public incrementPage(filterName: string): void {
this.store.dispatch(new SearchFilterIncrementPageAction(filterName));
}
+
+ public resetPage(filterName: string): void {
+ this.store.dispatch(new SearchFilterResetPageAction(filterName));
+ }
}
function filterByNameSelector(name: string): MemoizedSelector {