Skip to content

Commit 68dd350

Browse files
committed
[TLC-674] Do not display duplicate section if data is empty
1 parent a9a87d3 commit 68dd350

1 file changed

Lines changed: 42 additions & 30 deletions

File tree

src/app/submission/objects/submission-objects.effects.ts

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
import { Injectable } from '@angular/core';
2-
import { Actions, createEffect, ofType } from '@ngrx/effects';
3-
import { Store } from '@ngrx/store';
4-
import { TranslateService } from '@ngx-translate/core';
1+
import {Injectable} from '@angular/core';
2+
import {Actions, createEffect, ofType} from '@ngrx/effects';
3+
import {Store} from '@ngrx/store';
4+
import {TranslateService} from '@ngx-translate/core';
55
import findKey from 'lodash/findKey';
66
import isEqual from 'lodash/isEqual';
77
import union from 'lodash/union';
88

9-
import { from as observableFrom, Observable, of as observableOf } from 'rxjs';
10-
import { catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
11-
import { SubmissionObject } from '../../core/submission/models/submission-object.model';
12-
import { WorkflowItem } from '../../core/submission/models/workflowitem.model';
13-
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
14-
import { WorkspaceitemSectionsObject } from '../../core/submission/models/workspaceitem-sections.model';
15-
import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model';
16-
import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service';
17-
import { isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
18-
import { NotificationsService } from '../../shared/notifications/notifications.service';
19-
import { SectionsType } from '../sections/sections-type';
20-
import { SectionsService } from '../sections/sections.service';
21-
import { SubmissionState } from '../submission.reducers';
22-
import { SubmissionService } from '../submission.service';
9+
import {from as observableFrom, Observable, of as observableOf} from 'rxjs';
10+
import {catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom} from 'rxjs/operators';
11+
import {SubmissionObject} from '../../core/submission/models/submission-object.model';
12+
import {WorkflowItem} from '../../core/submission/models/workflowitem.model';
13+
import {WorkspaceitemSectionUploadObject} from '../../core/submission/models/workspaceitem-section-upload.model';
14+
import {WorkspaceitemSectionsObject} from '../../core/submission/models/workspaceitem-sections.model';
15+
import {WorkspaceItem} from '../../core/submission/models/workspaceitem.model';
16+
import {SubmissionJsonPatchOperationsService} from '../../core/submission/submission-json-patch-operations.service';
17+
import {isEmpty, isNotEmpty, isNotUndefined} from '../../shared/empty.util';
18+
import {NotificationsService} from '../../shared/notifications/notifications.service';
19+
import {SectionsType} from '../sections/sections-type';
20+
import {SectionsService} from '../sections/sections.service';
21+
import {SubmissionState} from '../submission.reducers';
22+
import {SubmissionService} from '../submission.service';
2323
import parseSectionErrors from '../utils/parseSectionErrors';
2424
import {
2525
CompleteInitSubmissionFormAction,
@@ -45,16 +45,19 @@ import {
4545
UpdateSectionDataAction,
4646
UpdateSectionDataSuccessAction
4747
} from './submission-objects.actions';
48-
import { SubmissionObjectEntry } from './submission-objects.reducer';
49-
import { Item } from '../../core/shared/item.model';
50-
import { RemoteData } from '../../core/data/remote-data';
51-
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
52-
import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service';
53-
import { followLink } from '../../shared/utils/follow-link-config.model';
54-
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
55-
import { FormState } from '../../shared/form/form.reducer';
56-
import { SubmissionSectionObject } from './submission-section-object.model';
57-
import { SubmissionSectionError } from './submission-section-error.model';
48+
import {SubmissionObjectEntry} from './submission-objects.reducer';
49+
import {Item} from '../../core/shared/item.model';
50+
import {RemoteData} from '../../core/data/remote-data';
51+
import {getFirstSucceededRemoteDataPayload} from '../../core/shared/operators';
52+
import {SubmissionObjectDataService} from '../../core/submission/submission-object-data.service';
53+
import {followLink} from '../../shared/utils/follow-link-config.model';
54+
import parseSectionErrorPaths, {SectionErrorPath} from '../utils/parseSectionErrorPaths';
55+
import {FormState} from '../../shared/form/form.reducer';
56+
import {SubmissionSectionObject} from './submission-section-object.model';
57+
import {SubmissionSectionError} from './submission-section-error.model';
58+
import {
59+
WorkspaceitemSectionDuplicatesObject
60+
} from '../../core/submission/models/workspaceitem-section-duplicates.model';
5861

5962
@Injectable()
6063
export class SubmissionObjectEffects {
@@ -71,7 +74,11 @@ export class SubmissionObjectEffects {
7174
const selfLink = sectionDefinition._links.self.href || sectionDefinition._links.self;
7275
const sectionId = selfLink.substr(selfLink.lastIndexOf('/') + 1);
7376
const config = sectionDefinition._links.config ? (sectionDefinition._links.config.href || sectionDefinition._links.config) : '';
74-
const enabled = (sectionDefinition.mandatory) || (isNotEmpty(action.payload.sections) && action.payload.sections.hasOwnProperty(sectionId));
77+
// A section is enabled if it is mandatory (except duplicate detection) or contains data in its section payload
78+
const enabled = (sectionDefinition.mandatory && (sectionDefinition.sectionType !== SectionsType.Duplicates))
79+
|| (isNotEmpty(action.payload.sections) && action.payload.sections.hasOwnProperty(sectionId)
80+
&& (sectionDefinition.sectionType === SectionsType.Duplicates && isNotEmpty((action.payload.sections[sectionId] as WorkspaceitemSectionDuplicatesObject).potentialDuplicates))
81+
);
7582
let sectionData;
7683
if (sectionDefinition.sectionType !== SectionsType.SubmissionForm) {
7784
sectionData = (isNotUndefined(action.payload.sections) && isNotUndefined(action.payload.sections[sectionId])) ? action.payload.sections[sectionId] : Object.create(null);
@@ -434,8 +441,13 @@ export class SubmissionObjectEffects {
434441
&& isEmpty(sections[sherpaPoliciesSectionId])) {
435442
mappedActions.push(new UpdateSectionDataAction(submissionId, sherpaPoliciesSectionId, null, [], []));
436443
}
437-
});
438444

445+
// When Duplicate Detection step is enabled, add it only if there are duplicates
446+
const duplicatesSectionId = findKey(currentState.sections, (section) => section.sectionType === SectionsType.Duplicates);
447+
if (isNotUndefined(duplicatesSectionId) && isNotEmpty(currentState.sections[duplicatesSectionId]?.data) && isEmpty(sections[duplicatesSectionId])) {
448+
mappedActions.push(new UpdateSectionDataAction(submissionId, duplicatesSectionId, null, [], []));
449+
}
450+
});
439451
}
440452
return mappedActions;
441453
}

0 commit comments

Comments
 (0)