mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-10 03:23:07 +00:00
Merge remote-tracking branch 'templates/dspace-7.4' into issue-1671_fix-relationships-not-updating-view-on-submission-form_contribute-7.4
# Conflicts: # src/app/submission/sections/form/section-form.component.spec.ts # src/app/submission/sections/form/section-form.component.ts
This commit is contained in:
@@ -10,11 +10,10 @@ import { FormBuilderService } from '../../../shared/form/builder/form-builder.se
|
||||
import { FormComponent } from '../../../shared/form/form.component';
|
||||
import { FormService } from '../../../shared/form/form.service';
|
||||
import { SectionModelComponent } from '../models/section.model';
|
||||
import { SubmissionFormsConfigService } from '../../../core/config/submission-forms-config.service';
|
||||
import { SubmissionFormsConfigDataService } from '../../../core/config/submission-forms-config-data.service';
|
||||
import { hasValue, isEmpty, isNotEmpty, isUndefined } from '../../../shared/empty.util';
|
||||
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
||||
import { SubmissionFormsModel } from '../../../core/config/models/config-submission-forms.model';
|
||||
import { SubmissionSectionError, SubmissionSectionObject } from '../../objects/submission-objects.reducer';
|
||||
import { FormFieldPreviousValueObject } from '../../../shared/form/builder/models/form-field-previous-value-object';
|
||||
import { SectionDataObject } from '../models/section-data.model';
|
||||
import { renderSectionFor } from '../sections-decorator';
|
||||
@@ -34,6 +33,11 @@ import { followLink } from '../../../shared/utils/follow-link-config.model';
|
||||
import { environment } from '../../../../environments/environment';
|
||||
import { ConfigObject } from '../../../core/config/models/config.model';
|
||||
import { RemoteData } from '../../../core/data/remote-data';
|
||||
import { SubmissionScopeType } from '../../../core/submission/submission-scope-type';
|
||||
import { WorkflowItem } from '../../../core/submission/models/workflowitem.model';
|
||||
import { SubmissionObject } from '../../../core/submission/models/submission-object.model';
|
||||
import { SubmissionSectionObject } from '../../objects/submission-section-object.model';
|
||||
import { SubmissionSectionError } from '../../objects/submission-section-error.model';
|
||||
|
||||
/**
|
||||
* This component represents a section that contains a Form.
|
||||
@@ -112,7 +116,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
*/
|
||||
protected subs: Subscription[] = [];
|
||||
|
||||
protected workspaceItem: WorkspaceItem;
|
||||
protected submissionObject: SubmissionObject;
|
||||
/**
|
||||
* The FormComponent reference
|
||||
*/
|
||||
@@ -125,7 +129,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
* @param {FormBuilderService} formBuilderService
|
||||
* @param {SectionFormOperationsService} formOperationsService
|
||||
* @param {FormService} formService
|
||||
* @param {SubmissionFormsConfigService} formConfigService
|
||||
* @param {SubmissionFormsConfigDataService} formConfigService
|
||||
* @param {NotificationsService} notificationsService
|
||||
* @param {SectionsService} sectionService
|
||||
* @param {SubmissionService} submissionService
|
||||
@@ -141,7 +145,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
protected formBuilderService: FormBuilderService,
|
||||
protected formOperationsService: SectionFormOperationsService,
|
||||
protected formService: FormService,
|
||||
protected formConfigService: SubmissionFormsConfigService,
|
||||
protected formConfigService: SubmissionFormsConfigDataService,
|
||||
protected notificationsService: NotificationsService,
|
||||
protected sectionService: SectionsService,
|
||||
protected submissionService: SubmissionService,
|
||||
@@ -173,10 +177,10 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
getRemoteDataPayload())
|
||||
])),
|
||||
take(1))
|
||||
.subscribe(([sectionData, workspaceItem]: [WorkspaceitemSectionFormObject, WorkspaceItem]) => {
|
||||
.subscribe(([sectionData, submissionObject]: [WorkspaceitemSectionFormObject, SubmissionObject]) => {
|
||||
if (isUndefined(this.formModel)) {
|
||||
// this.sectionData.errorsToShow = [];
|
||||
this.workspaceItem = workspaceItem;
|
||||
this.submissionObject = submissionObject;
|
||||
// Is the first loading so init form
|
||||
this.initForm(sectionData);
|
||||
this.sectionData.data = sectionData;
|
||||
@@ -223,7 +227,7 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
|
||||
const sectionDataToCheck = {};
|
||||
Object.keys(sectionData).forEach((key) => {
|
||||
if (this.sectionData.data && hasValue(this.sectionData.data[key])) {
|
||||
if (this.sectionData.data && hasValue(this.sectionData.data[key]) && this.inCurrentSubmissionScope(key)) {
|
||||
sectionDataToCheck[key] = this.sectionData.data[key];
|
||||
}
|
||||
});
|
||||
@@ -246,6 +250,28 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
||||
return isNotEmpty(diffResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether a specific field is editable in the current scope. Unscoped fields always return true.
|
||||
* @private
|
||||
*/
|
||||
private inCurrentSubmissionScope(field: string): boolean {
|
||||
const scope = this.formConfig?.rows.find(row => {
|
||||
return row.fields?.[0]?.selectableMetadata?.[0]?.metadata === field;
|
||||
}).fields?.[0]?.scope;
|
||||
|
||||
switch (scope) {
|
||||
case SubmissionScopeType.WorkspaceItem: {
|
||||
return (this.submissionObject as any).type === WorkspaceItem.type.value;
|
||||
}
|
||||
case SubmissionScopeType.WorkflowItem: {
|
||||
return (this.submissionObject as any).type === WorkflowItem.type.value;
|
||||
}
|
||||
default: {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize form model
|
||||
*
|
||||
|
Reference in New Issue
Block a user