diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html
index 4df06bc0e6..5f34d8ccd0 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html
@@ -1,11 +1,4 @@
-
-
-
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts
index 07d691a5cb..8891a179c3 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts
@@ -6,10 +6,6 @@ import { Context } from '../../../../../core/shared/context.model';
import { Component, Inject, OnInit } from '@angular/core';
import { Metadata } from '../../../../../core/shared/metadata.utils';
import { MetadataValue } from '../../../../../core/shared/metadata.models';
-import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
-import { ExternalSourceEntryImportModalComponent } from '../../../../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component';
-import { DsDynamicLookupRelationExternalSourceTabComponent } from '../../../../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component';
-import { hasValue } from '../../../../../shared/empty.util';
@listableObjectComponent(ExternalSourceEntry, ViewMode.ListElement, Context.SubmissionModal)
@Component({
@@ -23,29 +19,7 @@ export class ExternalSourceEntryListSubmissionElementComponent extends AbstractL
*/
uri: MetadataValue;
- /**
- * The modal for importing the entry
- */
- modalRef: NgbModalRef;
-
- constructor(@Inject(DsDynamicLookupRelationExternalSourceTabComponent) private externalSourceTab: DsDynamicLookupRelationExternalSourceTabComponent,
- private modalService: NgbModal) {
- super();
- }
-
ngOnInit(): void {
this.uri = Metadata.first(this.object.metadata, 'dc.identifier.uri');
}
-
- import(): void {
- this.modalRef = this.modalService.open(ExternalSourceEntryImportModalComponent, {
- size: 'lg',
- container: 'ds-dynamic-lookup-relation-modal'
- });
- const modalComp = this.modalRef.componentInstance;
- modalComp.externalSourceEntry = this.object;
- if (hasValue(this.externalSourceTab) && hasValue(this.externalSourceTab.relationship)) {
- modalComp.relationship = this.externalSourceTab.relationship;
- }
- }
}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.html
index a9ae77a9f5..04737c44e4 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.html
@@ -14,8 +14,9 @@
[config]="initialPagination"
[hideGear]="true"
[context]="context"
- (deselectObject)="deselectObject.emit($event)"
- (selectObject)="selectObject.emit($event)">
+ [importable]="true"
+ [importConfig]="importConfig"
+ (importObject)="import($event)">
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts
index d884f5f63d..18dfa4277f 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/dynamic-lookup-relation-external-source-tab.component.ts
@@ -1,4 +1,4 @@
-import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
import { SEARCH_CONFIG_SERVICE } from '../../../../../../+my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../../core/shared/search/search-configuration.service';
import { Router } from '@angular/router';
@@ -15,6 +15,11 @@ import { ListableObject } from '../../../../../object-collection/shared/listable
import { fadeIn, fadeInOut } from '../../../../../animations/fade';
import { PaginationComponentOptions } from '../../../../../pagination/pagination-component-options.model';
import { RelationshipOptions } from '../../../models/relationship-options.model';
+import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
+import { ExternalSourceEntryImportModalComponent } from './external-source-entry-import-modal/external-source-entry-import-modal.component';
+import { Subscription } from 'rxjs/internal/Subscription';
+import { hasValue } from '../../../../../empty.util';
+import { SelectableListService } from '../../../../../object-list/selectable-list/selectable-list.service';
@Component({
selector: 'ds-dynamic-lookup-relation-external-source-tab',
@@ -32,7 +37,7 @@ import { RelationshipOptions } from '../../../models/relationship-options.model'
]
})
-export class DsDynamicLookupRelationExternalSourceTabComponent implements OnInit {
+export class DsDynamicLookupRelationExternalSourceTabComponent implements OnInit, OnDestroy {
@Input() label: string;
@Input() listId: string;
@Input() relationship: RelationshipOptions;
@@ -56,9 +61,28 @@ export class DsDynamicLookupRelationExternalSourceTabComponent implements OnInit
*/
entriesRD$: Observable>>;
+ /**
+ * Config to use for the import buttons
+ */
+ importConfig = {
+ buttonLabel: 'submission.sections.describe.relationship-lookup.external-source.import-button-title'
+ };
+
+ /**
+ * The modal for importing the entry
+ */
+ modalRef: NgbModalRef;
+
+ /**
+ * Subscription to the modal's importedObject event-emitter
+ */
+ importObjectSub: Subscription;
+
constructor(private router: Router,
public searchConfigService: SearchConfigurationService,
- private externalSourceService: ExternalSourceService) {
+ private externalSourceService: ExternalSourceService,
+ private modalService: NgbModal,
+ private selectableListService: SelectableListService) {
}
ngOnInit(): void {
@@ -67,4 +91,28 @@ export class DsDynamicLookupRelationExternalSourceTabComponent implements OnInit
this.externalSourceService.getExternalSourceEntries(this.externalSource.id, searchOptions))
)
}
+
+ /**
+ * Start the import of an entry by opening up an import modal window
+ * @param entry The entry to import
+ */
+ import(entry) {
+ this.modalRef = this.modalService.open(ExternalSourceEntryImportModalComponent, {
+ size: 'lg',
+ container: 'ds-dynamic-lookup-relation-modal'
+ });
+ const modalComp = this.modalRef.componentInstance;
+ modalComp.externalSourceEntry = entry;
+ modalComp.relationship = this.relationship;
+ this.importObjectSub = modalComp.importedObject.subscribe((object) => {
+ this.selectableListService.selectSingle(this.listId, object);
+ this.selectObject.emit(object);
+ });
+ }
+
+ ngOnDestroy(): void {
+ if (hasValue(this.importObjectSub)) {
+ this.importObjectSub.unsubscribe();
+ }
+ }
}
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html
index f055e617e3..348b7eae18 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component.html
@@ -26,7 +26,7 @@
[selectionConfig]="{ repeatable: false, listId: entityListId }"
[linkType]="linkTypes.ExternalLink"
[context]="context"
- (deselectObject)="deselectEntity($event)"
+ (deselectObject)="deselectEntity()"
(selectObject)="selectEntity($event)">