mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +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 { 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, {
|
||||||
|
@@ -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))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user