Skip to content

Commit fda4ef7

Browse files
[DURACOM-152] Section visibility read-only
1 parent 2c7cf18 commit fda4ef7

3 files changed

Lines changed: 17 additions & 6 deletions

File tree

src/app/submission/sections/form/section-form.component.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,8 @@ describe('SubmissionSectionFormComponent test suite', () => {
249249
formConfigService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(testFormConfiguration));
250250
sectionsServiceStub.getSectionData.and.returnValue(observableOf(sectionData));
251251
sectionsServiceStub.getSectionServerErrors.and.returnValue(observableOf([]));
252+
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
253+
252254
spyOn(comp, 'initForm');
253255
spyOn(comp, 'subscriptions');
254256

src/app/submission/sections/form/section-form.component.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
118118
protected subs: Subscription[] = [];
119119

120120
protected submissionObject: SubmissionObject;
121+
122+
/**
123+
* A flag representing if this section is readonly
124+
*/
125+
protected isSectionReadonly = false;
126+
121127
/**
122128
* The FormComponent reference
123129
*/
@@ -175,13 +181,15 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
175181
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType),
176182
this.submissionObjectService.findById(this.submissionId, true, false, followLink('item')).pipe(
177183
getFirstSucceededRemoteData(),
178-
getRemoteDataPayload())
184+
getRemoteDataPayload()),
185+
this.sectionService.isSectionReadOnly(this.submissionId, this.sectionData.id, this.submissionService.getSubmissionScope())
179186
])),
180187
take(1))
181-
.subscribe(([sectionData, submissionObject]: [WorkspaceitemSectionFormObject, SubmissionObject]) => {
188+
.subscribe(([sectionData, submissionObject, isSectionReadOnly]: [WorkspaceitemSectionFormObject, SubmissionObject, boolean]) => {
182189
if (isUndefined(this.formModel)) {
183190
// this.sectionData.errorsToShow = [];
184191
this.submissionObject = submissionObject;
192+
this.isSectionReadonly = isSectionReadOnly;
185193
// Is the first loading so init form
186194
this.initForm(sectionData);
187195
this.sectionData.data = sectionData;
@@ -286,11 +294,11 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
286294
this.formConfig,
287295
this.collectionId,
288296
sectionData,
289-
this.submissionService.getSubmissionScope()
297+
this.submissionService.getSubmissionScope(),
298+
this.isSectionReadonly
290299
);
291300
const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig);
292301
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata);
293-
294302
} catch (e) {
295303
const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString();
296304
const sectionError: SubmissionSectionError = {

src/app/submission/sections/sections.service.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,9 @@ export class SectionsService {
334334
filter((sectionObj) => hasValue(sectionObj)),
335335
map((sectionObj: SubmissionSectionObject) => {
336336
return isNotEmpty(sectionObj.visibility)
337-
&& sectionObj.visibility.other === 'READONLY'
338-
&& submissionScope !== SubmissionScopeType.WorkspaceItem;
337+
&& ((sectionObj.visibility.other === 'READONLY' && submissionScope !== SubmissionScopeType.WorkspaceItem)
338+
|| (sectionObj.visibility.main === 'READONLY' && submissionScope === SubmissionScopeType.WorkspaceItem)
339+
);
339340
}),
340341
distinctUntilChanged());
341342
}

0 commit comments

Comments
 (0)