Merge branch 'main' into w2p-87382_circular-dependency-fixes

This commit is contained in:
lotte
2022-04-05 16:35:00 +02:00
890 changed files with 48746 additions and 17465 deletions

View File

@@ -33,6 +33,9 @@ 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';
@@ -45,7 +48,7 @@ import { SubmissionSectionError } from '../../objects/submission-section-error.m
templateUrl: './section-form.component.html',
})
@renderSectionFor(SectionsType.SubmissionForm)
export class SubmissionSectionformComponent extends SectionModelComponent {
export class SubmissionSectionFormComponent extends SectionModelComponent {
/**
* The form id
@@ -113,7 +116,7 @@ export class SubmissionSectionformComponent extends SectionModelComponent {
*/
protected subs: Subscription[] = [];
protected workspaceItem: WorkspaceItem;
protected submissionObject: SubmissionObject;
/**
* The FormComponent reference
*/
@@ -174,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;
@@ -224,7 +227,7 @@ export class SubmissionSectionformComponent extends SectionModelComponent {
const sectionDataToCheck = {};
Object.keys(sectionData).forEach((key) => {
if (this.sectionMetadata && this.sectionMetadata.includes(key)) {
if (this.sectionMetadata && this.sectionMetadata.includes(key) && this.inCurrentSubmissionScope(key)) {
sectionDataToCheck[key] = sectionData[key];
}
});
@@ -247,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.type === WorkspaceItem.type;
}
case SubmissionScopeType.WorkflowItem: {
return this.submissionObject.type === WorkflowItem.type;
}
default: {
return true;
}
}
}
/**
* Initialize form model
*