diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index f835699087..7b3d31c3e0 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -85,7 +85,15 @@
"sidebar": {
"close": "Back to results",
"open": "Search Tools",
- "results": "results"
+ "results": "results",
+ "filters":{
+ "title":"Filters"
+ },
+ "settings":{
+ "title":"Settings",
+ "sort-by":"Sort By",
+ "rpp":"Results per page"
+ }
},
"view-switch": {
"show-list": "Show as list",
diff --git a/src/app/+search-page/search-page.component.html b/src/app/+search-page/search-page.component.html
index e8f2fe5487..2eac36be2f 100644
--- a/src/app/+search-page/search-page.component.html
+++ b/src/app/+search-page/search-page.component.html
@@ -1,15 +1,19 @@
-
diff --git a/src/app/+search-page/search-page.component.ts b/src/app/+search-page/search-page.component.ts
index 1d3b80e4e7..4a6f272580 100644
--- a/src/app/+search-page/search-page.component.ts
+++ b/src/app/+search-page/search-page.component.ts
@@ -49,12 +49,7 @@ export class SearchPageComponent implements OnInit, OnDestroy {
this.isMobileView = this.windowService.isXs();
this.scopeListRDObs = communityService.findAll();
// Initial pagination config
- const pagination: PaginationComponentOptions = new PaginationComponentOptions();
- pagination.id = 'search-results-pagination';
- pagination.currentPage = 1;
- pagination.pageSize = 10;
- const sort: SortOptions = new SortOptions();
- this.searchOptions = { pagination: pagination, sort: sort };
+ this.searchOptions = this.service.searchOptions;
}
ngOnInit(): void {
diff --git a/src/app/+search-page/search-page.module.ts b/src/app/+search-page/search-page.module.ts
index 661399bab1..e940e4975d 100644
--- a/src/app/+search-page/search-page.module.ts
+++ b/src/app/+search-page/search-page.module.ts
@@ -11,6 +11,7 @@ import { SearchService } from './search-service/search.service';
import { SearchSidebarComponent } from './search-sidebar/search-sidebar.component';
import { SearchSidebarService } from './search-sidebar/search-sidebar.service';
import { SearchSidebarEffects } from './search-sidebar/search-sidebar.effects';
+import { SearchSettingsComponent } from './search-settings/search-settings.component';
import { EffectsModule } from '@ngrx/effects';
import { SidebarFiltersComponent } from './search-filters/search-filters.component';
import { SidebarFilterComponent } from './search-filters/search-filter/search-filter.component';
@@ -32,6 +33,7 @@ const effects = [
SearchPageComponent,
SearchResultsComponent,
SearchSidebarComponent,
+ SearchSettingsComponent,
ItemSearchResultListElementComponent,
CollectionSearchResultListElementComponent,
CommunitySearchResultListElementComponent,
diff --git a/src/app/+search-page/search-results/search-results.component.html b/src/app/+search-page/search-results/search-results.component.html
index 20b2cb8699..70e315671b 100644
--- a/src/app/+search-page/search-results/search-results.component.html
+++ b/src/app/+search-page/search-results/search-results.component.html
@@ -1,11 +1,10 @@
-
0">{{ 'search.results.head' | translate }}
-
-
-
+
0">{{ 'search.results.head' | translate }}
+
+
-
\ No newline at end of file
+
diff --git a/src/app/+search-page/search-service/search.service.ts b/src/app/+search-page/search-service/search.service.ts
index 20b64b2528..cf1da04acc 100644
--- a/src/app/+search-page/search-service/search.service.ts
+++ b/src/app/+search-page/search-service/search.service.ts
@@ -14,8 +14,10 @@ import { SearchFilterConfig } from './search-filter-config.model';
import { FilterType } from './filter-type.model';
import { FacetValue } from './facet-value.model';
import { ViewMode } from '../../+search-page/search-options.model';
-import { Router, NavigationExtras, ActivatedRoute, Params } from '@angular/router';
+import { Router, NavigationExtras, ActivatedRoute } from '@angular/router';
import { RouteService } from '../../shared/route.service';
+import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
+import { SortOptions } from 'src/app/core/cache/models/sort-options.model';
function shuffle(array: any[]) {
let i = 0;
@@ -80,15 +82,25 @@ export class SearchService implements OnDestroy {
isOpenByDefault: false
})
];
+ // searchOptions: BehaviorSubject;
+ searchOptions: SearchOptions;
constructor(private itemDataService: ItemDataService,
private routeService: RouteService,
private route: ActivatedRoute,
private router: Router) {
+ const pagination: PaginationComponentOptions = new PaginationComponentOptions();
+ pagination.id = 'search-results-pagination';
+ pagination.currentPage = 1;
+ pagination.pageSize = 10;
+ const sort: SortOptions = new SortOptions();
+ this.searchOptions = { pagination: pagination, sort: sort };
+ // this.searchOptions = new BehaviorSubject(searchOptions);
}
search(query: string, scopeId?: string, searchOptions?: SearchOptions): Observable>>> {
+ this.searchOptions = this.searchOptions;
let self = `https://dspace7.4science.it/dspace-spring-rest/api/search?query=${query}`;
if (hasValue(scopeId)) {
self += `&scope=${scopeId}`;
diff --git a/src/app/+search-page/search-settings/search-settings.component.html b/src/app/+search-page/search-settings/search-settings.component.html
new file mode 100644
index 0000000000..c53f0290a0
--- /dev/null
+++ b/src/app/+search-page/search-settings/search-settings.component.html
@@ -0,0 +1,25 @@
+{{ 'search.sidebar.settings.title' | translate}}
+
+
{{ 'search.sidebar.settings.sort-by' | translate}}
+
+
+
+ {{direction.value}}
+
+
+
+
+
+
+
{{ 'search.sidebar.settings.rpp' | translate}}
+
+
+
+
+ {{item}}
+
+
+
+
diff --git a/src/app/+search-page/search-settings/search-settings.component.scss b/src/app/+search-page/search-settings/search-settings.component.scss
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/+search-page/search-settings/search-settings.component.ts b/src/app/+search-page/search-settings/search-settings.component.ts
new file mode 100644
index 0000000000..864720a019
--- /dev/null
+++ b/src/app/+search-page/search-settings/search-settings.component.ts
@@ -0,0 +1,79 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { SearchService } from '../search-service/search.service';
+import { SearchOptions } from '../search-options.model';
+import { SortDirection } from '../../core/cache/models/sort-options.model';
+import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
+
+@Component({
+ selector: 'ds-search-settings',
+ styleUrls: ['./search-settings.component.scss'],
+ templateUrl: './search-settings.component.html',
+})
+export class SearchSettingsComponent implements OnInit{
+
+ @Input() searchOptions: SearchOptions;
+ /**
+ * Declare SortDirection enumeration to use it in the template
+ */
+ public sortDirections = SortDirection;
+ /**
+ * Number of items per page.
+ */
+ public pageSize;
+
+ private sub;
+ private scope: string;
+ query: string;
+ page: number;
+ direction: SortDirection;
+ currentParams = {};
+
+ constructor(private service: SearchService,
+ private route: ActivatedRoute,
+ private router: Router){
+
+ }
+
+ ngOnInit(): void {
+ this.searchOptions = this.service.searchOptions;
+ this.pageSize = this.searchOptions.pagination.pageSize;
+ this.sub = this.route
+ .queryParams
+ .subscribe((params) => {
+ this.currentParams = params;
+ this.query = params.query || '';
+ this.scope = params.scope;
+ this.page = +params.page || this.searchOptions.pagination.currentPage;
+ this.pageSize = +params.pageSize || this.searchOptions.pagination.pageSize;
+ this.direction = +params.sortDirection || this.searchOptions.sort.direction;
+ });
+ }
+ reloadRPP(event:Event) {
+ let value = (event.target).value;
+ this.searchOptions.sort.direction;
+ const navigationExtras: NavigationExtras = {
+ queryParams: {
+ query:this.query,
+ pageSize:value,
+ scope: this.scope,
+ page:this.page,
+ sortDirection:this.direction
+ }
+ };
+ this.router.navigate(['/search'], navigationExtras);
+ }
+
+ reloadOrder(event:Event) {
+ let value = (event.target).value;
+ const navigationExtras: NavigationExtras = {
+ queryParams: {
+ query:this.query,
+ pageSize:this.pageSize,
+ scope: this.scope,
+ page:this.page,
+ sortDirection:value
+ }
+ };
+ this.router.navigate(['/search'], navigationExtras);
+ }
+}
diff --git a/src/app/+search-page/search-sidebar/search-sidebar.component.html b/src/app/+search-page/search-sidebar/search-sidebar.component.html
index 4adca2907a..325f557233 100644
--- a/src/app/+search-page/search-sidebar/search-sidebar.component.html
+++ b/src/app/+search-page/search-sidebar/search-sidebar.component.html
@@ -9,5 +9,6 @@
-
\ No newline at end of file
+
diff --git a/src/app/shared/pagination/pagination.component.html b/src/app/shared/pagination/pagination.component.html
index 25412b3195..062209f4bb 100644
--- a/src/app/shared/pagination/pagination.component.html
+++ b/src/app/shared/pagination/pagination.component.html
@@ -1,12 +1,12 @@
-