Skip to content

Commit 119d97e

Browse files
Merge branch 'task/dspace-cris-2023_02_x/DSC-2309' into task/main-cris/DSC-2309
2 parents 29ea584 + 9709e50 commit 119d97e

4 files changed

Lines changed: 34 additions & 4 deletions

File tree

src/app/shared/metadata-link-view/metadata-link-view-avatar-popover/metadata-link-view-avatar-popover.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
<img *ngIf="src !== null" class="thumbnail-content img-fluid" [ngClass]="{'d-none': isLoading}"
1111
[src]="src | dsSafeUrl" [alt]="alt | translate" (error)="errorHandler()" (load)="successHandler()">
1212
<div *ngIf="src === null && !isLoading" class="thumbnail-content outer" #thumbnailBox>
13-
<img [src]="fallbackImage" [alt]="placeholder | translate">
13+
<img [src]="placeholderImageUrl" [alt]="placeholder | translate" (error)="onImageError($event)">
1414
</div>
1515
</div>

src/app/shared/metadata-link-view/metadata-link-view-avatar-popover/metadata-link-view-avatar-popover.component.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,10 @@ describe('MetadataLinkViewAvatarPopoverComponent', () => {
6262
it('should create', () => {
6363
expect(component).toBeTruthy();
6464
});
65+
66+
it('should set placeholder image based on entity type', () => {
67+
component.entityType = 'testEntityType';
68+
component.ngOnInit();
69+
expect(component.placeholderImageUrl).toBe('assets/images/testentitytype-placeholder.svg');
70+
});
6571
});

src/app/shared/metadata-link-view/metadata-link-view-avatar-popover/metadata-link-view-avatar-popover.component.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
NgClass,
44
NgIf,
55
} from '@angular/common';
6-
import { Component } from '@angular/core';
76
import { TranslateModule } from '@ngx-translate/core';
7+
import { Component, Input, OnInit } from '@angular/core';
88
import { ThumbnailComponent } from 'src/app/thumbnail/thumbnail.component';
99

1010
import { ThemedLoadingComponent } from '../../loading/themed-loading.component';
@@ -26,10 +26,33 @@ import { VarDirective } from '../../utils/var.directive';
2626
],
2727
standalone: true,
2828
})
29-
export class MetadataLinkViewAvatarPopoverComponent extends ThumbnailComponent {
29+
export class MetadataLinkViewAvatarPopoverComponent extends ThumbnailComponent implements OnInit {
3030

3131
/**
3232
* The fallback image to use when the thumbnail is not available
3333
*/
34-
fallbackImage = 'assets/images/person-placeholder.svg';
34+
fallbackImageUrl = 'assets/images/replacement_image.svg';
35+
36+
/**
37+
* Placeholder image url that changes based on entity type
38+
*/
39+
placeholderImageUrl: string;
40+
41+
/**
42+
* The entity type of the item which the avatar belong
43+
*/
44+
@Input() entityType: string;
45+
46+
ngOnInit() {
47+
this.placeholderImageUrl = this.entityType ? `assets/images/${this.entityType.toLowerCase()}-placeholder.svg` : this.fallbackImageUrl;
48+
}
49+
50+
/**
51+
* Handle error loading image placeholder, e.g. missing placeholder image for specific entity type.
52+
* @param event
53+
*/
54+
onImageError(event: Event) {
55+
const target = event.target as HTMLImageElement;
56+
target.src = this.fallbackImageUrl;
57+
}
3558
}

src/app/shared/metadata-link-view/metadata-link-view-popover/metadata-link-view-popover.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<ds-metadata-link-view-avatar-popover
55
*ngIf="item.thumbnail | async"
66
[thumbnail]="item.thumbnail | async"
7+
[entityType]="item.entityType"
78
></ds-metadata-link-view-avatar-popover>
89
<span class="font-weight-bold h4"> {{item.firstMetadataValue('dc.title')}} </span>
910
</div>

0 commit comments

Comments
 (0)