[TLC-380] Refactor metadata rep list comp after rebase

This commit is contained in:
Kim Shepherd
2023-02-06 14:12:38 +13:00
parent d86e8ed0a8
commit 63af2e079c
2 changed files with 28 additions and 3 deletions

View File

@@ -11,6 +11,8 @@ import { MetadataValue } from '../../../core/shared/metadata.models';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model';
import { MetadatumRepresentation } from '../../../core/shared/metadata-representation/metadatum/metadatum-representation.model'; import { MetadatumRepresentation } from '../../../core/shared/metadata-representation/metadatum/metadatum-representation.model';
import { BrowseDefinitionDataService } from '../../../core/browse/browse-definition-data.service';
import { BrowseDefinitionDataServiceStub } from '../../../shared/testing/browse-definition-data-service.stub';
const itemType = 'Person'; const itemType = 'Person';
const metadataFields = ['dc.contributor.author', 'dc.creator']; const metadataFields = ['dc.contributor.author', 'dc.creator'];
@@ -104,7 +106,8 @@ describe('MetadataRepresentationListComponent', () => {
imports: [TranslateModule.forRoot()], imports: [TranslateModule.forRoot()],
declarations: [MetadataRepresentationListComponent, VarDirective], declarations: [MetadataRepresentationListComponent, VarDirective],
providers: [ providers: [
{ provide: RelationshipDataService, useValue: relationshipService } { provide: RelationshipDataService, useValue: relationshipService },
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(MetadataRepresentationListComponent, { }).overrideComponent(MetadataRepresentationListComponent, {

View File

@@ -8,6 +8,13 @@ import { RelationshipDataService } from '../../../core/data/relationship-data.se
import { MetadataValue } from '../../../core/shared/metadata.models'; import { MetadataValue } from '../../../core/shared/metadata.models';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { AbstractIncrementalListComponent } from '../abstract-incremental-list/abstract-incremental-list.component'; import { AbstractIncrementalListComponent } from '../abstract-incremental-list/abstract-incremental-list.component';
import { map } from 'rxjs/operators';
import { getRemoteDataPayload } from '../../../core/shared/operators';
import {
MetadatumRepresentation
} from '../../../core/shared/metadata-representation/metadatum/metadatum-representation.model';
import { BrowseService } from '../../../core/browse/browse.service';
import { BrowseDefinitionDataService } from '../../../core/browse/browse-definition-data.service';
@Component({ @Component({
selector: 'ds-metadata-representation-list', selector: 'ds-metadata-representation-list',
@@ -52,7 +59,8 @@ export class MetadataRepresentationListComponent extends AbstractIncrementalList
*/ */
total: number; total: number;
constructor(public relationshipService: RelationshipDataService) { constructor(public relationshipService: RelationshipDataService,
private browseDefinitionDataService: BrowseDefinitionDataService) {
super(); super();
} }
@@ -76,7 +84,21 @@ export class MetadataRepresentationListComponent extends AbstractIncrementalList
...metadata ...metadata
.slice((this.objects.length * this.incrementBy), (this.objects.length * this.incrementBy) + this.incrementBy) .slice((this.objects.length * this.incrementBy), (this.objects.length * this.incrementBy) + this.incrementBy)
.map((metadatum: any) => Object.assign(new MetadataValue(), metadatum)) .map((metadatum: any) => Object.assign(new MetadataValue(), metadatum))
.map((metadatum: MetadataValue) => this.relationshipService.resolveMetadataRepresentation(metadatum, this.parentItem, this.itemType)), .map((metadatum: MetadataValue) => {
if (metadatum.isVirtual) {
return this.relationshipService.resolveMetadataRepresentation(metadatum, this.parentItem, this.itemType)
} else {
// Check for a configured browse link and return a standard metadata representation
let searchKeyArray: string[] = [];
this.metadataFields.forEach((field: string) => {
searchKeyArray = searchKeyArray.concat(BrowseService.toSearchKeyArray(field));
});
return this.browseDefinitionDataService.findByFields(this.metadataFields).pipe(
getRemoteDataPayload(),
map((def) => Object.assign(new MetadatumRepresentation(this.itemType, def), metadatum))
);
}
}),
); );
} }
} }