diff --git a/src/app/+item-page/item-page.module.ts b/src/app/+item-page/item-page.module.ts index 2a5d0b6da7..36652f5223 100644 --- a/src/app/+item-page/item-page.module.ts +++ b/src/app/+item-page/item-page.module.ts @@ -52,7 +52,6 @@ import { MetadataFieldWrapperComponent } from './field-components/metadata-field RelatedItemsComponent, ItemComponent, GenericItemPageFieldComponent, - MetadataRepresentationListComponent, RelatedEntitiesSearchComponent ], exports: [ @@ -62,7 +61,6 @@ import { MetadataFieldWrapperComponent } from './field-components/metadata-field GenericItemPageFieldComponent, RelatedEntitiesSearchComponent, RelatedItemsComponent, - MetadataRepresentationListComponent, ItemPageTitleFieldComponent ], entryComponents: [ diff --git a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts index 39a03216de..1fa623f6c9 100644 --- a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts +++ b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.ts @@ -106,7 +106,7 @@ export class MetadataRepresentationListComponent implements OnInit { return leftItem.payload; } }), - map((item: Item) => Object.assign(new ItemMetadataRepresentation(), item)) + map((item: Item) => Object.assign(new ItemMetadataRepresentation(metadatum), item)) ) )); } else { diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts index 1d7b4f42e4..c346a5bb03 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts @@ -9,7 +9,7 @@ import { RelationshipService } from '../../../../../core/data/relationship.servi import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { take } from 'rxjs/operators'; -@listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.Submission) +@listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.Workspace) @Component({ selector: 'ds-person-search-result-list-submission-element', styleUrls: ['./person-search-result-list-submission-element.component.scss'], diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html index 97b2932b87..1208eebf17 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.html @@ -14,8 +14,8 @@ - +
{{ message | translate:model.validators }} @@ -61,7 +61,7 @@ - + diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts index 185bb4a3a1..25cfc971e4 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts @@ -57,7 +57,7 @@ import { DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER } from './models/date-picker/dat import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP } from './models/lookup/dynamic-lookup.model'; import { DynamicListCheckboxGroupModel } from './models/list/dynamic-list-checkbox-group.model'; import { DynamicListRadioGroupModel } from './models/list/dynamic-list-radio-group.model'; -import { hasValue, isNotEmpty, isNotUndefined } from '../../../empty.util'; +import { hasValue, isNotEmpty, isNotEmptyOperator, isNotUndefined } from '../../../empty.util'; import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_NAME } from './models/lookup/dynamic-lookup-name.model'; import { DsDynamicTagComponent } from './models/tag/dynamic-tag.component'; import { DsDatePickerComponent } from './models/date-picker/date-picker.component'; @@ -178,7 +178,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo relationships$: Observable[]>; hasRelationLookup: boolean; modalRef: NgbModalRef; - modelValueMDRepresentation; + item$: Observable; listId: string; searchConfig: string; /* tslint:disable:no-output-rename */ @@ -216,19 +216,20 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo this.hasRelationLookup = hasValue(this.model.relationship); if (this.hasRelationLookup) { this.listId = 'list-' + this.model.relationship.relationshipType; - this.submissionObjectService + this.item$ = this.submissionObjectService .findById(this.model.submissionId).pipe( - getSucceededRemoteData(), - getRemoteDataPayload(), - switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable>).pipe(getSucceededRemoteData(), getRemoteDataPayload())), + getSucceededRemoteData(), + getRemoteDataPayload(), + switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable>).pipe(getSucceededRemoteData(), getRemoteDataPayload()))); + + this.item$.pipe( switchMap((item: Item) => this.relationService.getRelatedItemsByLabel(item, this.model.relationship.relationshipType)), - map((items: PaginatedList) => items.page.map((item) => Object.assign(new SearchResult(), { indexableObject: item }))), + map((items: RemoteData>) => items.payload.page.map((item) => Object.assign(new SearchResult(), { indexableObject: item }))), ).subscribe((relatedItems: SearchResult[]) => this.selectableListService.select(this.listId, relatedItems)); this.relationships$ = this.selectableListService.getSelectableList(this.listId).pipe( map((listState: SelectableListState) => hasValue(listState) && hasValue(listState.selection) ? listState.selection : []), ) as Observable[]>; - this.modelValueMDRepresentation = this.relationships$.pipe(map((result: SearchResult[]) => result.map((element: SearchResult) => Object.assign(new ItemMetadataRepresentation(), element.indexableObject)))); } } @@ -274,13 +275,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo } openLookup() { - this.submissionObjectService - .findById(this.model.submissionId).pipe( - getSucceededRemoteData(), - getRemoteDataPayload(), - switchMap((submissionObject: SubmissionObject) => - (submissionObject.item as Observable>).pipe(getSucceededRemoteData(), getRemoteDataPayload())) - ).subscribe((item: Item) => { + this.item$.subscribe((item: Item) => { this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent, { size: 'lg' }); const modalComp = this.modalRef.componentInstance; modalComp.repeatable = this.model.repeatable; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.ts index b427bc6021..09c88403f8 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.ts @@ -1,8 +1,8 @@ import { Component, NgZone, OnInit } from '@angular/core'; import { combineLatest, Observable, Subscription } from 'rxjs'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; -import { hasValue, hasValueOperator } from '../../../../empty.util'; -import { map, skip, switchMap, take, tap } from 'rxjs/operators'; +import { hasValue } from '../../../../empty.util'; +import { map, skip, switchMap, take } from 'rxjs/operators'; import { SEARCH_CONFIG_SERVICE } from '../../../../../+my-dspace-page/my-dspace-page.component'; import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service'; import { SelectableListService } from '../../../../object-list/selectable-list/selectable-list.service'; @@ -12,7 +12,6 @@ import { RelationshipOptions } from '../../models/relationship-options.model'; import { SearchResult } from '../../../../search/search-result.model'; import { Item } from '../../../../../core/shared/item.model'; import { getRemoteDataPayload, getSucceededRemoteData } from '../../../../../core/shared/operators'; -import { RemoteData } from '../../../../../core/data/remote-data'; import { AddRelationshipAction, RemoveRelationshipAction } from './relationship.actions'; import { RelationshipService } from '../../../../../core/data/relationship.service'; import { RelationshipTypeService } from '../../../../../core/data/relationship-type.service'; @@ -21,8 +20,6 @@ import { AppState } from '../../../../../app.reducer'; import { Context } from '../../../../../core/shared/context.model'; import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model'; import { MetadataValue } from '../../../../../core/shared/metadata.models'; -import { ItemSearchResult } from '../../../../object-collection/shared/item-search-result.model'; -import { NameVariantListState } from './name-variant.reducer'; @Component({ selector: 'ds-dynamic-lookup-relation-modal', @@ -62,7 +59,7 @@ export class DsDynamicLookupRelationModalComponent implements OnInit { ngOnInit(): void { this.selection$ = this.selectableListService.getSelectableList(this.listId).pipe(map((listState: SelectableListState) => hasValue(listState) && hasValue(listState.selection) ? listState.selection : [])); if (this.relationshipOptions.nameVariants) { - this.context = Context.Submission; + this.context = Context.Workspace; } } diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index f4a95c6b43..0a163d1ae8 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -168,6 +168,7 @@ import { PublicationSearchResultGridElementComponent } from './object-grid/searc import { ListableObjectDirective } from './object-collection/shared/listable-object/listable-object.directive'; import { SearchLabelComponent } from './search/search-labels/search-label/search-label.component'; import { ItemMetadataRepresentationListElementComponent } from './object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component'; +import { MetadataRepresentationListComponent } from '../+item-page/simple/metadata-representation-list/metadata-representation-list.component'; const MODULES = [ // Do NOT include UniversalModule, HttpModule, or JsonpModule here @@ -319,7 +320,8 @@ const COMPONENTS = [ ItemTypeBadgeComponent, ItemSelectComponent, CollectionSelectComponent, - MetadataRepresentationLoaderComponent + MetadataRepresentationLoaderComponent, + MetadataRepresentationListComponent, ]; const ENTRY_COMPONENTS = [