Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<ds-metadata-field-wrapper [label]="label | translate">
@for (name of funderNames; track name; let last = $last) {
<span class="dont-break-out">{{ name }}</span>
@if (!last) {
<span class="separator" [innerHTML]="separator"></span>
}
}
</ds-metadata-field-wrapper>
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import {
Component,
Input,
OnInit,
} from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';

import { ConfigurationDataService } from '../../../../../core/data/configuration-data.service';
import { Item } from '../../../../../core/shared/item.model';
import { MetadataValue } from '../../../../../core/shared/metadata.models';
import { getFirstCompletedRemoteData } from '../../../../../core/shared/operators';
import { MetadataFieldWrapperComponent } from '../../../../../shared/metadata-field-wrapper/metadata-field-wrapper.component';

@Component({
selector: 'ds-item-page-funder-field',
templateUrl: './item-page-funder-field.component.html',
standalone: true,
imports: [
MetadataFieldWrapperComponent,
TranslateModule,
],
})
/**
* Component for displaying dc.relation.funder metadata on the simple item page.
* Funder code-to-name mapping is fetched from the backend configuration property "funder.name.map".
*/
export class ItemPageFunderFieldComponent implements OnInit {

@Input() item: Item;

@Input() label = 'item.page.funder';

@Input() separator = ', ';

funderNames: string[] = [];

constructor(
private configurationService: ConfigurationDataService,
) {}

ngOnInit(): void {
const mdValues: MetadataValue[] = this.item?.allMetadata(['dc.relation.funder']) ?? [];
if (mdValues.length === 0) {
return;
}

this.configurationService.findByPropertyName('funder.name.map').pipe(
getFirstCompletedRemoteData(),
).subscribe(rd => {
const nameMap: Record<string, string> = {};
if (rd.hasSucceeded && rd.payload?.values) {
for (const entry of rd.payload.values) {
const eqIndex = entry.indexOf('=');
if (eqIndex > 0) {
nameMap[entry.substring(0, eqIndex).trim()] = entry.substring(eqIndex + 1).trim();
}
}
}
const resolved = mdValues.map(md => nameMap[md.value] ?? md.value);
this.funderNames = [...new Set(resolved)];
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@
[separator]="', '"
[label]="'item.page.subject'">
</ds-generic-item-page-field>
<ds-item-page-funder-field [item]="object"
[label]="'item.page.funder'">
</ds-item-page-funder-field>
<ds-generic-item-page-field [item]="object"
[fields]="['dc.identifier.citation']"
[label]="'item.page.citation'">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { ThemedFileSectionComponent } from '../../field-components/file-section/
import { ItemPageAbstractFieldComponent } from '../../field-components/specific-field/abstract/item-page-abstract-field.component';
import { ItemPageCitationFieldComponent } from '../../field-components/specific-field/citation/item-page-citation.component';
import { ItemPageDateFieldComponent } from '../../field-components/specific-field/date/item-page-date-field.component';
import { ItemPageFunderFieldComponent } from '../../field-components/specific-field/funder/item-page-funder-field.component';
import { GenericItemPageFieldComponent } from '../../field-components/specific-field/generic/generic-item-page-field.component';
import { GeospatialItemPageFieldComponent } from '../../field-components/specific-field/geospatial/geospatial-item-page-field.component';
import { ThemedItemPageTitleFieldComponent } from '../../field-components/specific-field/title/themed-item-page-field.component';
Expand Down Expand Up @@ -47,6 +48,7 @@ import { ItemComponent } from '../shared/item.component';
ItemPageAbstractFieldComponent,
ItemPageCitationFieldComponent,
ItemPageDateFieldComponent,
ItemPageFunderFieldComponent,
ItemPageUriFieldComponent,
MetadataFieldWrapperComponent,
MiradorViewerComponent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@
[separator]="', '"
[label]="'item.page.subject'">
</ds-generic-item-page-field>
<ds-item-page-funder-field [item]="object"
[label]="'item.page.funder'">
</ds-item-page-funder-field>
<ds-generic-item-page-field [item]="object"
[fields]="['dc.identifier.citation']"
[label]="'item.page.citation'">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { ItemPageAbstractFieldComponent } from '../../field-components/specific-
import { ItemPageCcLicenseFieldComponent } from '../../field-components/specific-field/cc-license/item-page-cc-license-field.component';
import { ItemPageCitationFieldComponent } from '../../field-components/specific-field/citation/item-page-citation.component';
import { ItemPageDateFieldComponent } from '../../field-components/specific-field/date/item-page-date-field.component';
import { ItemPageFunderFieldComponent } from '../../field-components/specific-field/funder/item-page-funder-field.component';
import { GenericItemPageFieldComponent } from '../../field-components/specific-field/generic/generic-item-page-field.component';
import { GeospatialItemPageFieldComponent } from '../../field-components/specific-field/geospatial/geospatial-item-page-field.component';
import { ThemedItemPageTitleFieldComponent } from '../../field-components/specific-field/title/themed-item-page-field.component';
Expand Down Expand Up @@ -49,6 +50,7 @@ import { ItemComponent } from '../shared/item.component';
ItemPageCcLicenseFieldComponent,
ItemPageCitationFieldComponent,
ItemPageDateFieldComponent,
ItemPageFunderFieldComponent,
ItemPageUriFieldComponent,
MetadataFieldWrapperComponent,
MiradorViewerComponent,
Expand Down
3 changes: 3 additions & 0 deletions src/assets/i18n/cs.json5
Original file line number Diff line number Diff line change
Expand Up @@ -4466,6 +4466,9 @@
// "item.page.subject": "Keywords",
"item.page.subject": "Klíčová slova",

// "item.page.funder": "The result was supported by the project",
"item.page.funder": "Výsledek byl podpořen projektem",

// "item.page.uri": "Identifier",
"item.page.uri": "Identifikátor",

Expand Down
2 changes: 2 additions & 0 deletions src/assets/i18n/en.json5
Original file line number Diff line number Diff line change
Expand Up @@ -2977,6 +2977,8 @@

"item.page.subject": "Keywords",

"item.page.funder": "The result was supported by the project",

"item.page.uri": "Identifier",

"item.page.bitstreams.view-more": "Show more",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { ThemedFileSectionComponent } from '../../../../../../../app/item-page/s
import { ItemPageAbstractFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/abstract/item-page-abstract-field.component';
import { ItemPageCitationFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/citation/item-page-citation.component';
import { ItemPageDateFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/date/item-page-date-field.component';
import { ItemPageFunderFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/funder/item-page-funder-field.component';
import { GenericItemPageFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/generic/generic-item-page-field.component';
import { GeospatialItemPageFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/geospatial/geospatial-item-page-field.component';
import { ThemedItemPageTitleFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/title/themed-item-page-field.component';
Expand Down Expand Up @@ -46,6 +47,7 @@ import { ThemedThumbnailComponent } from '../../../../../../../app/thumbnail/the
ItemPageAbstractFieldComponent,
ItemPageCitationFieldComponent,
ItemPageDateFieldComponent,
ItemPageFunderFieldComponent,
ItemPageUriFieldComponent,
MetadataFieldWrapperComponent,
MiradorViewerComponent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { ItemPageAbstractFieldComponent } from '../../../../../../../app/item-pa
import { ItemPageCcLicenseFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/cc-license/item-page-cc-license-field.component';
import { ItemPageCitationFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/citation/item-page-citation.component';
import { ItemPageDateFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/date/item-page-date-field.component';
import { ItemPageFunderFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/funder/item-page-funder-field.component';
import { GenericItemPageFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/generic/generic-item-page-field.component';
import { GeospatialItemPageFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/geospatial/geospatial-item-page-field.component';
import { ThemedItemPageTitleFieldComponent } from '../../../../../../../app/item-page/simple/field-components/specific-field/title/themed-item-page-field.component';
Expand Down Expand Up @@ -51,6 +52,7 @@ import { ThemedThumbnailComponent } from '../../../../../../../app/thumbnail/the
ItemPageCcLicenseFieldComponent,
ItemPageCitationFieldComponent,
ItemPageDateFieldComponent,
ItemPageFunderFieldComponent,
ItemPageUriFieldComponent,
MetadataFieldWrapperComponent,
MiradorViewerComponent,
Expand Down
Loading