Skip to content

Commit 93de389

Browse files
[DSC-1669] fixes
1 parent e170401 commit 93de389

5 files changed

Lines changed: 40 additions & 73 deletions

File tree

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metadata/rendering-types/metadataGroup/metadata-group.component.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ export abstract class MetadataGroupComponent extends RenderingTypeStructuredMode
3232
/**
3333
* The prefix used for box field label's i18n key
3434
*/
35-
fieldI18nPrefix = 'layout.field.label.';
35+
readonly fieldI18nPrefix = 'layout.field.label';
3636

3737
/**
3838
* The prefix used for box field label's
3939
*/
40-
nestedName = 'nested';
40+
readonly nestedMetadataPrefix = 'NESTED';
4141

4242
/**
4343
* A boolean representing if component is initialized
@@ -85,28 +85,23 @@ export abstract class MetadataGroupComponent extends RenderingTypeStructuredMode
8585
}
8686

8787
/**
88-
* Returns a string representing the label of field if exists
88+
* Returns the translated label, if exists, otherwiuse returns a fallback value
8989
*/
9090
getLabel(field: LayoutField): string {
91-
return this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.' + this.nestedName + '.[' + field.metadata + ']') ??
92-
this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.[' + field.metadata + ']') ??
93-
this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.[' + field.metadata + ']') ??
94-
this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.' + field.metadata) ??
95-
this.getTranslationIfExists(this.fieldI18nPrefix + '[' + field.metadata + ']') ??
96-
this.getTranslationIfExists(this.fieldI18nPrefix + field.label) ??
97-
field.label ??
98-
field.metadata;
91+
return this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.${this.nestedMetadataPrefix}[${field.metadata}]}`) ??
92+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.[${field.metadata}]`) ??
93+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.${field.metadata}`) ?? // old syntax - do not use
94+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.[${field.metadata}]`) ??
95+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${field.label}`) ?? // old syntax - do not use
96+
field.label; // the untranslated value from the CRIS layout
9997
}
10098

10199
/**
102-
* If the translation haven't found return null otherwise return translated label
100+
* Return the translated label, if exists, otherwise returns null
103101
*/
104-
getTranslationIfExists(fieldLabelI18nKey: string): string {
105-
const header: string = this.translateService.instant(fieldLabelI18nKey);
106-
if (header !== fieldLabelI18nKey) {
107-
return header;
108-
}
109-
return null;
102+
getTranslationIfExists(key: string): string {
103+
const translation: string = this.translateService.instant(key);
104+
return translation !== key ? translation : null;
110105
}
111106

112107
ngOnDestroy(): void {

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metadata/row/metadata-container/metadata-container.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div *ngIf="metadataFieldRenderOptions" class="{{containerStyle}}">
22
<div class="d-flex" [class.flex-column]="field.labelAsHeading">
33
<span *ngIf="hasLabel"
4-
class="{{labelStyle}}" [innerHTML]="label">
4+
class="{{labelStyle}}" [innerHTML]="getLabel()">
55
</span>
66

77
<div *ngIf="!isStructured" class="d-flex col flex-wrap" [class.flex-column]="!field.valuesInline">

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metadata/row/metadata-container/metadata-container.component.ts

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { CrisLayoutBox, LayoutField, LayoutFieldType } from '../../../../../../.
44
import {
55
FieldRenderingType,
66
getMetadataBoxFieldRendering,
7-
MetadataBoxFieldRenderOptions
7+
MetadataBoxFieldRenderOptions,
88
} from '../../rendering-types/metadata-box.decorator';
99
import { hasValue, isEmpty, isNotEmpty } from '../../../../../../../shared/empty.util';
1010
import { TranslateService } from '@ngx-translate/core';
@@ -13,12 +13,11 @@ import { MetadataValue } from '../../../../../../../core/shared/metadata.models'
1313
import { Bitstream } from '../../../../../../../core/shared/bitstream.model';
1414
import { getFirstCompletedRemoteData } from '../../../../../../../core/shared/operators';
1515
import { map, take } from 'rxjs/operators';
16-
import { BitstreamDataService } from '../../../../../../../core/data/bitstream-data.service';
17-
import { MetadataFilter } from '../../../../../../../core/data/bitstream-data.service';
16+
import { BitstreamDataService, MetadataFilter } from '../../../../../../../core/data/bitstream-data.service';
1817
import { RemoteData } from '../../../../../../../core/data/remote-data';
1918
import { PaginatedList } from '../../../../../../../core/data/paginated-list.model';
2019
import { Observable } from 'rxjs';
21-
import { TranslationUtilityService } from '../../../../../../services/translation.service';
20+
import { inject } from '@angular/core';
2221

2322
@Component({
2423
selector: 'ds-metadata-container',
@@ -47,7 +46,7 @@ export class MetadataContainerComponent implements OnInit {
4746
/**
4847
* The prefix used for box field label's i18n key
4948
*/
50-
fieldI18nPrefix = 'layout.field.label.';
49+
readonly fieldI18nPrefix = 'layout.field.label';
5150

5251
/**
5352
* A boolean representing if metadata rendering type is structured or not
@@ -59,13 +58,9 @@ export class MetadataContainerComponent implements OnInit {
5958
*/
6059
metadataFieldRenderOptions: MetadataBoxFieldRenderOptions;
6160

62-
constructor(
63-
protected bitstreamDataService: BitstreamDataService,
64-
protected translateService: TranslateService,
65-
protected cd: ChangeDetectorRef,
66-
protected translationService: TranslationUtilityService
67-
) {
68-
}
61+
protected readonly bitstreamDataService = inject(BitstreamDataService);
62+
protected readonly translateService = inject(TranslateService);
63+
protected readonly cd = inject(ChangeDetectorRef);
6964

7065
/**
7166
* Returns all metadata values in the item
@@ -84,24 +79,27 @@ export class MetadataContainerComponent implements OnInit {
8479
/**
8580
* Returns a string representing the label of field if exists
8681
*/
87-
get label(): string {
88-
return this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.[' + this.field.metadata + ']') ??
89-
this.getTranslationIfExists(this.fieldI18nPrefix + this.item.entityType + '.' + this.field.metadata) ??
90-
this.getTranslationIfExists(this.fieldI18nPrefix + '[' + this.field.metadata + ']') ??
91-
this.getTranslationIfExists(this.fieldI18nPrefix + this.field.label) ??
92-
this.field.label ??
93-
this.field.metadata;
82+
getLabel(): string {
83+
if (this.field.fieldType === LayoutFieldType.BITSTREAM) {
84+
return (hasValue(this.field.bitstream.metadataValue) ?
85+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.BITSTREAM[${this.field.bitstream.metadataValue}]`) :
86+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.BITSTREAM`)
87+
) ?? this.field.label;
88+
} else {
89+
return this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.[${this.field.metadata}]`) ??
90+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.item.entityType}.${this.field.metadata}`) ?? // old syntax - do not use
91+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.[${this.field.metadata}]`) ??
92+
this.getTranslationIfExists(`${this.fieldI18nPrefix}.${this.field.label}`) ?? // old syntax - do not use
93+
this.field.label; // the untranslated value from the CRIS layout
94+
}
9495
}
9596

9697
/**
97-
* If the translation haven't found return null otherwise return translated label
98+
* Return the translated label, if exists, otherwise returns null
9899
*/
99-
getTranslationIfExists(fieldLabelI18nKey: string): string {
100-
const header: string = this.translateService.instant(fieldLabelI18nKey);
101-
if (header !== fieldLabelI18nKey) {
102-
return header;
103-
}
104-
return null;
100+
getTranslationIfExists(key: string): string {
101+
const translation: string = this.translateService.instant(key);
102+
return translation !== key ? translation : null;
105103
}
106104

107105
/**

src/app/cris-layout/services/translation.service.ts

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/assets/i18n/en.json5

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7587,7 +7587,7 @@
75877587
"layout.field.label.Person.[person.affiliation.name]": "Main Affiliation",
75887588
"layout.field.label.Person.[oairecerif.identifier.url]": "Web Site",
75897589
"layout.field.label.Person.[person.email]": "Email",
7590-
"layout.field.label.Person.[person.identifier.orcid]": "ORCID",
7590+
// "layout.field.label.Person.[person.identifier.orcid]": "ORCID",
75917591
"layout.field.label.Person.[person.identifier.scopus-author-id]": "Scopus Author ID",
75927592
"layout.field.label.Person.[person.identifier.rid]": "Researcher ID",
75937593
"layout.field.label.Person.[dc.description.abstract]": "Biography",
@@ -7678,4 +7678,5 @@
76787678

76797679
// Do not add new labels below layout ones
76807680
// All new labels should be placed together with similar ones, or in alphabetical orders
7681+
76817682
}

0 commit comments

Comments
 (0)