mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
[TLC-380] Refactor metadata rep list comp after rebase
This commit is contained in:
@@ -11,6 +11,8 @@ import { MetadataValue } from '../../../core/shared/metadata.models';
|
||||
import { DSpaceObject } from '../../../core/shared/dspace-object.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 { BrowseDefinitionDataService } from '../../../core/browse/browse-definition-data.service';
|
||||
import { BrowseDefinitionDataServiceStub } from '../../../shared/testing/browse-definition-data-service.stub';
|
||||
|
||||
const itemType = 'Person';
|
||||
const metadataFields = ['dc.contributor.author', 'dc.creator'];
|
||||
@@ -104,7 +106,8 @@ describe('MetadataRepresentationListComponent', () => {
|
||||
imports: [TranslateModule.forRoot()],
|
||||
declarations: [MetadataRepresentationListComponent, VarDirective],
|
||||
providers: [
|
||||
{ provide: RelationshipDataService, useValue: relationshipService }
|
||||
{ provide: RelationshipDataService, useValue: relationshipService },
|
||||
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub }
|
||||
],
|
||||
schemas: [NO_ERRORS_SCHEMA]
|
||||
}).overrideComponent(MetadataRepresentationListComponent, {
|
||||
|
@@ -8,6 +8,13 @@ import { RelationshipDataService } from '../../../core/data/relationship-data.se
|
||||
import { MetadataValue } from '../../../core/shared/metadata.models';
|
||||
import { Item } from '../../../core/shared/item.model';
|
||||
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({
|
||||
selector: 'ds-metadata-representation-list',
|
||||
@@ -52,7 +59,8 @@ export class MetadataRepresentationListComponent extends AbstractIncrementalList
|
||||
*/
|
||||
total: number;
|
||||
|
||||
constructor(public relationshipService: RelationshipDataService) {
|
||||
constructor(public relationshipService: RelationshipDataService,
|
||||
private browseDefinitionDataService: BrowseDefinitionDataService) {
|
||||
super();
|
||||
}
|
||||
|
||||
@@ -76,7 +84,21 @@ export class MetadataRepresentationListComponent extends AbstractIncrementalList
|
||||
...metadata
|
||||
.slice((this.objects.length * this.incrementBy), (this.objects.length * this.incrementBy) + this.incrementBy)
|
||||
.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))
|
||||
);
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user