[DURACOM-152] Section visibility read-only

This commit is contained in:
Alisa Ismailati
2023-06-15 12:42:29 +02:00
parent 2c7cf18be5
commit fda4ef77e4
3 changed files with 17 additions and 6 deletions

View File

@@ -249,6 +249,8 @@ describe('SubmissionSectionFormComponent test suite', () => {
formConfigService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(testFormConfiguration)); formConfigService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(testFormConfiguration));
sectionsServiceStub.getSectionData.and.returnValue(observableOf(sectionData)); sectionsServiceStub.getSectionData.and.returnValue(observableOf(sectionData));
sectionsServiceStub.getSectionServerErrors.and.returnValue(observableOf([])); sectionsServiceStub.getSectionServerErrors.and.returnValue(observableOf([]));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
spyOn(comp, 'initForm'); spyOn(comp, 'initForm');
spyOn(comp, 'subscriptions'); spyOn(comp, 'subscriptions');

View File

@@ -118,6 +118,12 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
protected subs: Subscription[] = []; protected subs: Subscription[] = [];
protected submissionObject: SubmissionObject; protected submissionObject: SubmissionObject;
/**
* A flag representing if this section is readonly
*/
protected isSectionReadonly = false;
/** /**
* The FormComponent reference * The FormComponent reference
*/ */
@@ -175,13 +181,15 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType), this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType),
this.submissionObjectService.findById(this.submissionId, true, false, followLink('item')).pipe( this.submissionObjectService.findById(this.submissionId, true, false, followLink('item')).pipe(
getFirstSucceededRemoteData(), getFirstSucceededRemoteData(),
getRemoteDataPayload()) getRemoteDataPayload()),
this.sectionService.isSectionReadOnly(this.submissionId, this.sectionData.id, this.submissionService.getSubmissionScope())
])), ])),
take(1)) take(1))
.subscribe(([sectionData, submissionObject]: [WorkspaceitemSectionFormObject, SubmissionObject]) => { .subscribe(([sectionData, submissionObject, isSectionReadOnly]: [WorkspaceitemSectionFormObject, SubmissionObject, boolean]) => {
if (isUndefined(this.formModel)) { if (isUndefined(this.formModel)) {
// this.sectionData.errorsToShow = []; // this.sectionData.errorsToShow = [];
this.submissionObject = submissionObject; this.submissionObject = submissionObject;
this.isSectionReadonly = isSectionReadOnly;
// Is the first loading so init form // Is the first loading so init form
this.initForm(sectionData); this.initForm(sectionData);
this.sectionData.data = sectionData; this.sectionData.data = sectionData;
@@ -286,11 +294,11 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
this.formConfig, this.formConfig,
this.collectionId, this.collectionId,
sectionData, sectionData,
this.submissionService.getSubmissionScope() this.submissionService.getSubmissionScope(),
this.isSectionReadonly
); );
const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig); const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig);
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata); this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata);
} catch (e) { } catch (e) {
const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString(); const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString();
const sectionError: SubmissionSectionError = { const sectionError: SubmissionSectionError = {

View File

@@ -334,8 +334,9 @@ export class SectionsService {
filter((sectionObj) => hasValue(sectionObj)), filter((sectionObj) => hasValue(sectionObj)),
map((sectionObj: SubmissionSectionObject) => { map((sectionObj: SubmissionSectionObject) => {
return isNotEmpty(sectionObj.visibility) return isNotEmpty(sectionObj.visibility)
&& sectionObj.visibility.other === 'READONLY' && ((sectionObj.visibility.other === 'READONLY' && submissionScope !== SubmissionScopeType.WorkspaceItem)
&& submissionScope !== SubmissionScopeType.WorkspaceItem; || (sectionObj.visibility.main === 'READONLY' && submissionScope === SubmissionScopeType.WorkspaceItem)
);
}), }),
distinctUntilChanged()); distinctUntilChanged());
} }