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 bfa9c214e9..7c0c08382a 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 @@ -54,6 +54,7 @@ [metadataFields]="model.metadataFields" [submissionId]="model.submissionId" [relationshipOptions]="model.relationship" + [canRemove]="canRemove()" (remove)="onRemove()" > @@ -66,6 +67,7 @@ [metadataFields]="model.metadataFields" [submissionId]="model.submissionId" [relationshipOptions]="model.relationship" + [canRemove]="canRemove()" > 1; + } + /** * Initialize this.item$ based on this.model.submissionId */ diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.html index 07ea131a00..5275cef68a 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.html @@ -9,6 +9,7 @@ diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts index 3a5623cfdd..2a38a07759 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { ItemSearchResult } from '../../../../object-collection/shared/item-sear import { of as observableOf } from 'rxjs'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoaderMock } from '../../../../testing/translate-loader.mock'; +import { SubmissionService } from '../../../../../submission/submission.service'; +import { SubmissionServiceStub } from '../../../../testing/submission-service.stub'; describe('ExistingMetadataListElementComponent', () => { let component: ExistingMetadataListElementComponent; @@ -79,6 +81,7 @@ describe('ExistingMetadataListElementComponent', () => { providers: [ { provide: SelectableListService, useValue: selectionService }, { provide: Store, useValue: store }, + { provide: SubmissionService, useClass: SubmissionServiceStub }, ], schemas: [NO_ERRORS_SCHEMA] }) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts index d0d4ad435b..927d5e04d2 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts @@ -19,6 +19,7 @@ import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-v import { RelationshipOptions } from '../../models/relationship-options.model'; import { DynamicConcatModel } from '../models/ds-dynamic-concat.model'; import { RemoveRelationshipAction } from '../relation-lookup-modal/relationship.actions'; +import { SubmissionService } from '../../../../../submission/submission.service'; // tslint:disable:max-classes-per-file /** @@ -145,6 +146,7 @@ export class ExistingMetadataListElementComponent implements OnInit, OnChanges, @Input() metadataFields: string[]; @Input() relationshipOptions: RelationshipOptions; @Input() submissionId: string; + @Input() canRemove = true; metadataRepresentation$: BehaviorSubject = new BehaviorSubject(undefined); relatedItem: Item; @Output() remove: EventEmitter = new EventEmitter(); @@ -155,7 +157,8 @@ export class ExistingMetadataListElementComponent implements OnInit, OnChanges, constructor( private selectableListService: SelectableListService, - private store: Store + private store: Store, + private submissionService: SubmissionService ) { } @@ -194,6 +197,7 @@ export class ExistingMetadataListElementComponent implements OnInit, OnChanges, * Removes the selected relationship from the list */ removeSelection() { + this.submissionService.dispatchSave(this.submissionId); this.selectableListService.deselectSingle(this.listId, Object.assign(new ItemSearchResult(), { indexableObject: this.relatedItem })); this.store.dispatch(new RemoveRelationshipAction(this.submissionItem, this.relatedItem, this.relationshipOptions.relationshipType, this.submissionId)); this.remove.emit(); diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.html index 15087d2553..ed29fd14e3 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.html @@ -8,6 +8,7 @@ diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.spec.ts index fddb960515..d733f503bb 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.spec.ts @@ -12,6 +12,8 @@ import { ItemSearchResult } from '../../../../object-collection/shared/item-sear import { of as observableOf } from 'rxjs'; import { ReorderableRelationship } from '../existing-metadata-list-element/existing-metadata-list-element.component'; import { createSuccessfulRemoteDataObject$ } from '../../../../remote-data.utils'; +import { SubmissionService } from '../../../../../submission/submission.service'; +import { SubmissionServiceStub } from '../../../../testing/submission-service.stub'; describe('ExistingRelationListElementComponent', () => { let component: ExistingRelationListElementComponent; @@ -67,6 +69,7 @@ describe('ExistingRelationListElementComponent', () => { providers: [ { provide: SelectableListService, useValue: selectionService }, { provide: Store, useValue: store }, + { provide: SubmissionService, useClass: SubmissionServiceStub }, ], schemas: [NO_ERRORS_SCHEMA] }) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.ts index 8a4a7120e8..6d7e846bcb 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-relation-list-element/existing-relation-list-element.component.ts @@ -12,6 +12,7 @@ import { RelationshipOptions } from '../../models/relationship-options.model'; import { RemoveRelationshipAction } from '../relation-lookup-modal/relationship.actions'; import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ReorderableRelationship } from '../existing-metadata-list-element/existing-metadata-list-element.component'; +import { SubmissionService } from '../../../../../submission/submission.service'; // tslint:disable:max-classes-per-file /** @@ -61,6 +62,7 @@ export class ExistingRelationListElementComponent implements OnInit, OnChanges, @Input() metadataFields: string[]; @Input() relationshipOptions: RelationshipOptions; @Input() submissionId: string; + @Input() canRemove = true; relatedItem$: BehaviorSubject = new BehaviorSubject(undefined); viewType = ViewMode.ListElement; @Output() remove: EventEmitter = new EventEmitter(); @@ -72,6 +74,7 @@ export class ExistingRelationListElementComponent implements OnInit, OnChanges, constructor( private selectableListService: SelectableListService, + private submissionService: SubmissionService, private store: Store ) { } @@ -102,6 +105,7 @@ export class ExistingRelationListElementComponent implements OnInit, OnChanges, * Removes the selected relationship from the list */ removeSelection() { + this.submissionService.dispatchSave(this.submissionId); this.selectableListService.deselectSingle(this.listId, Object.assign(new ItemSearchResult(), { indexableObject: this.relatedItem$.getValue() })); this.store.dispatch(new RemoveRelationshipAction(this.submissionItem, this.relatedItem$.getValue(), this.relationshipOptions.relationshipType, this.submissionId)); }