From 8e9116f14f6987236d944a35056a92f4076e6e7c Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Mon, 11 Feb 2019 16:17:33 +0100 Subject: [PATCH] 59695: Refactored startsWith to browse-by-metadata-page --- .../browse-by-date-page.component.html | 16 ------- .../browse-by-date-page.component.scss | 0 .../browse-by-date-page.component.ts | 43 +------------------ .../browse-by-metadata-page.component.html | 7 ++- .../browse-by-metadata-page.component.ts | 35 ++++++++++++++- src/app/core/browse/browse.service.ts | 3 ++ 6 files changed, 44 insertions(+), 60 deletions(-) delete mode 100644 src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.html delete mode 100644 src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.scss diff --git a/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.html b/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.html deleted file mode 100644 index 81201f819f..0000000000 --- a/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.html +++ /dev/null @@ -1,16 +0,0 @@ -
- -
- diff --git a/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.scss b/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.ts b/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.ts index 8066185cc8..dd7380f226 100644 --- a/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.ts +++ b/src/app/+browse-by/+browse-by-date-page/browse-by-date-page.component.ts @@ -5,15 +5,11 @@ import { } from '../+browse-by-metadata-page/browse-by-metadata-page.component'; import { BrowseEntrySearchOptions } from '../../core/browse/browse-entry-search-options.model'; import { combineLatest as observableCombineLatest } from 'rxjs/internal/observable/combineLatest'; -import { take } from 'rxjs/operators'; -import { ActivatedRoute, Router } from '@angular/router'; -import { BrowseService } from '../../core/browse/browse.service'; -import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; @Component({ selector: 'ds-browse-by-date-page', - styleUrls: ['./browse-by-date-page.component.scss'], - templateUrl: './browse-by-date-page.component.html' + styleUrls: ['../+browse-by-metadata-page/browse-by-metadata-page.component.scss'], + templateUrl: '../+browse-by-metadata-page/browse-by-metadata-page.component.html' }) /** * Component for browsing items by metadata definition of type 'date' @@ -22,15 +18,6 @@ import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.serv */ export class BrowseByDatePageComponent extends BrowseByMetadataPageComponent { - startsWith: string; - - public constructor(protected route: ActivatedRoute, - protected browseService: BrowseService, - protected dsoService: DSpaceObjectDataService, - protected router: Router) { - super(route, browseService, dsoService); - } - ngOnInit(): void { this.updatePage(new BrowseEntrySearchOptions(null, this.paginationConfig, this.sortConfig)); this.subs.push( @@ -50,30 +37,4 @@ export class BrowseByDatePageComponent extends BrowseByMetadataPageComponent { })); } - goPrev() { - this.items$.pipe(take(1)).subscribe((items) => { - this.items$ = this.browseService.getPrevBrowseItems(items); - }); - } - - goNext() { - this.items$.pipe(take(1)).subscribe((items) => { - this.items$ = this.browseService.getNextBrowseItems(items); - }); - } - - pageSizeChange(size) { - this.router.navigate([], { - queryParams: Object.assign({ pageSize: size }), - queryParamsHandling: 'merge' - }); - } - - sortDirectionChange(direction) { - this.router.navigate([], { - queryParams: Object.assign({ sortDirection: direction }), - queryParamsHandling: 'merge' - }); - } - } diff --git a/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.html b/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.html index 08fb762db0..c4ad1037ed 100644 --- a/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.html +++ b/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.html @@ -4,7 +4,12 @@ title="{{'browse.title' | translate:{collection: (parent$ | async)?.payload?.name || '', field: 'browse.metadata.' + metadata | translate, value: (value)? '"' + value + '"': ''} }}" [objects$]="(items$ !== undefined)? items$ : browseEntries$" [paginationConfig]="paginationConfig" - [sortConfig]="sortConfig"> + [sortConfig]="sortConfig" + [enableArrows]="startsWith" + (prev)="goPrev()" + (next)="goNext()" + (pageSizeChange)="pageSizeChange($event)" + (sortDirectionChange)="sortDirectionChange($event)"> diff --git a/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.ts b/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.ts index 310c5b509e..ed7029bd2d 100644 --- a/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.ts +++ b/src/app/+browse-by/+browse-by-metadata-page/browse-by-metadata-page.component.ts @@ -4,7 +4,7 @@ import { RemoteData } from '../../core/data/remote-data'; import { PaginatedList } from '../../core/data/paginated-list'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { hasValue, isNotEmpty } from '../../shared/empty.util'; import { BrowseService } from '../../core/browse/browse.service'; import { BrowseEntry } from '../../core/shared/browse-entry.model'; @@ -13,6 +13,7 @@ import { BrowseEntrySearchOptions } from '../../core/browse/browse-entry-search- import { getSucceededRemoteData } from '../../core/shared/operators'; import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { take } from 'rxjs/operators'; @Component({ selector: 'ds-browse-by-metadata-page', @@ -77,9 +78,12 @@ export class BrowseByMetadataPageComponent implements OnInit { */ value = ''; + startsWith: string; + public constructor(protected route: ActivatedRoute, protected browseService: BrowseService, - protected dsoService: DSpaceObjectDataService) { + protected dsoService: DSpaceObjectDataService, + protected router: Router) { } ngOnInit(): void { @@ -94,6 +98,7 @@ export class BrowseByMetadataPageComponent implements OnInit { .subscribe((params) => { this.metadata = params.metadata || this.defaultMetadata; this.value = +params.value || params.value || ''; + this.startsWith = +params.startsWith || params.startsWith; const searchOptions = browseParamsToOptions(params, this.paginationConfig, this.sortConfig, this.metadata); if (isNotEmpty(this.value)) { this.updatePageWithItems(searchOptions, this.value); @@ -142,6 +147,32 @@ export class BrowseByMetadataPageComponent implements OnInit { } } + goPrev() { + this.items$.pipe(take(1)).subscribe((items) => { + this.items$ = this.browseService.getPrevBrowseItems(items); + }); + } + + goNext() { + this.items$.pipe(take(1)).subscribe((items) => { + this.items$ = this.browseService.getNextBrowseItems(items); + }); + } + + pageSizeChange(size) { + this.router.navigate([], { + queryParams: Object.assign({ pageSize: size }), + queryParamsHandling: 'merge' + }); + } + + sortDirectionChange(direction) { + this.router.navigate([], { + queryParams: Object.assign({ sortDirection: direction }), + queryParamsHandling: 'merge' + }); + } + ngOnDestroy(): void { this.subs.filter((sub) => hasValue(sub)).forEach((sub) => sub.unsubscribe()); } diff --git a/src/app/core/browse/browse.service.ts b/src/app/core/browse/browse.service.ts index 51c59cdf5f..94c13c7d05 100644 --- a/src/app/core/browse/browse.service.ts +++ b/src/app/core/browse/browse.service.ts @@ -108,6 +108,9 @@ export class BrowseService { args.push(`page=${options.pagination.currentPage - 1}`); args.push(`size=${options.pagination.pageSize}`); } + if (isNotEmpty(options.startsWith)) { + args.push(`startsWith=${options.startsWith}`); + } if (isNotEmpty(args)) { href = new URLCombiner(href, `?${args.join('&')}`).toString(); }