From 6b0513aba169e7bd125a689381ce5530eaa6cd19 Mon Sep 17 00:00:00 2001 From: Yury Bondarenko Date: Mon, 26 Sep 2022 17:40:38 +0200 Subject: [PATCH] Fix thumbnail placeholder font scaling in ds-recent-item-list --- .../recent-item-list.component.html | 4 +- .../recent-item-list.component.spec.ts | 7 ++- .../recent-item-list.component.ts | 54 +++++++++++++++---- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/src/app/home-page/recent-item-list/recent-item-list.component.html b/src/app/home-page/recent-item-list/recent-item-list.component.html index 8314580f1d..919b8646bb 100644 --- a/src/app/home-page/recent-item-list/recent-item-list.component.html +++ b/src/app/home-page/recent-item-list/recent-item-list.component.html @@ -1,5 +1,5 @@ -
+

{{'home.recent-submissions.head' | translate}}

@@ -12,4 +12,4 @@ - \ No newline at end of file + diff --git a/src/app/home-page/recent-item-list/recent-item-list.component.spec.ts b/src/app/home-page/recent-item-list/recent-item-list.component.spec.ts index 87152f53ef..edcb4f84f8 100644 --- a/src/app/home-page/recent-item-list/recent-item-list.component.spec.ts +++ b/src/app/home-page/recent-item-list/recent-item-list.component.spec.ts @@ -10,8 +10,11 @@ import { SearchConfigurationService } from '../../core/shared/search/search-conf import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { ViewMode } from 'src/app/core/shared/view-mode.model'; import { of as observableOf } from 'rxjs'; +import { APP_CONFIG } from '../../../config/app-config.interface'; +import { environment } from '../../../environments/environment'; +import { PLATFORM_ID } from '@angular/core'; + describe('RecentItemListComponent', () => { let component: RecentItemListComponent; let fixture: ComponentFixture; @@ -42,6 +45,8 @@ describe('RecentItemListComponent', () => { { provide: SearchService, useValue: searchServiceStub }, { provide: PaginationService, useValue: paginationService }, { provide: SearchConfigurationService, useValue: searchConfigServiceStub }, + { provide: APP_CONFIG, useValue: environment }, + { provide: PLATFORM_ID, useValue: 'browser' }, ], }) .compileComponents(); diff --git a/src/app/home-page/recent-item-list/recent-item-list.component.ts b/src/app/home-page/recent-item-list/recent-item-list.component.ts index df5359386a..f0e5803b71 100644 --- a/src/app/home-page/recent-item-list/recent-item-list.component.ts +++ b/src/app/home-page/recent-item-list/recent-item-list.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ElementRef, Inject, OnInit, PLATFORM_ID } from '@angular/core'; import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; import { fadeIn, fadeInOut } from '../../shared/animations/fade'; import { RemoteData } from '../../core/data/remote-data'; @@ -11,12 +11,13 @@ import { SortDirection, SortOptions } from '../../core/cache/models/sort-options import { environment } from '../../../environments/environment'; import { ViewMode } from '../../core/shared/view-mode.model'; import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; -import { - toDSpaceObjectListRD -} from '../../core/shared/operators'; -import { - Observable, -} from 'rxjs'; +import { toDSpaceObjectListRD } from '../../core/shared/operators'; +import { Observable } from 'rxjs'; +import { followLink, FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; +import { APP_CONFIG, AppConfig } from '../../../config/app-config.interface'; +import { isPlatformBrowser } from '@angular/common'; +import { setPlaceHolderAttributes } from '../../shared/utils/object-list-utils'; + @Component({ selector: 'ds-recent-item-list', templateUrl: './recent-item-list.component.html', @@ -31,14 +32,22 @@ export class RecentItemListComponent implements OnInit { itemRD$: Observable>>; paginationConfig: PaginationComponentOptions; sortConfig: SortOptions; + /** * The view-mode we're currently on * @type {ViewMode} */ viewMode = ViewMode.ListElement; - constructor(private searchService: SearchService, + + private _placeholderFontClass: string; + + constructor( + private searchService: SearchService, private paginationService: PaginationService, - public searchConfigurationService: SearchConfigurationService + public searchConfigurationService: SearchConfigurationService, + protected elementRef: ElementRef, + @Inject(APP_CONFIG) private appConfig: AppConfig, + @Inject(PLATFORM_ID) private platformId: Object, ) { this.paginationConfig = Object.assign(new PaginationComponentOptions(), { @@ -50,16 +59,29 @@ export class RecentItemListComponent implements OnInit { this.sortConfig = new SortOptions(environment.homePage.recentSubmissions.sortField, SortDirection.DESC); } ngOnInit(): void { + const linksToFollow: FollowLinkConfig[] = []; + if (this.appConfig.browseBy.showThumbnails) { + linksToFollow.push(followLink('thumbnail')); + } + this.itemRD$ = this.searchService.search( new PaginatedSearchOptions({ pagination: this.paginationConfig, sort: this.sortConfig, }), - ).pipe(toDSpaceObjectListRD()) as Observable>>; + undefined, + undefined, + undefined, + ...linksToFollow, + ).pipe( + toDSpaceObjectListRD() + ) as Observable>>; } + ngOnDestroy(): void { this.paginationService.clearPagination(this.paginationConfig.id); } + onLoadMore(): void { this.paginationService.updateRouteWithUrl(this.searchConfigurationService.paginationID, ['search'], { sortField: environment.homePage.recentSubmissions.sortField, @@ -68,5 +90,17 @@ export class RecentItemListComponent implements OnInit { }); } + get placeholderFontClass(): string { + if (this._placeholderFontClass === undefined) { + if (isPlatformBrowser(this.platformId)) { + const width = this.elementRef.nativeElement.offsetWidth; + this._placeholderFontClass = setPlaceHolderAttributes(width); + } else { + this._placeholderFontClass = 'hide-placeholder-text'; + } + } + return this._placeholderFontClass; + } + }