mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 13:33:03 +00:00
[TLC-674] Do not display duplicate section if data is empty
This commit is contained in:
@@ -1,25 +1,25 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
import {Actions, createEffect, ofType} from '@ngrx/effects';
|
||||||
import { Store } from '@ngrx/store';
|
import {Store} from '@ngrx/store';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
import findKey from 'lodash/findKey';
|
import findKey from 'lodash/findKey';
|
||||||
import isEqual from 'lodash/isEqual';
|
import isEqual from 'lodash/isEqual';
|
||||||
import union from 'lodash/union';
|
import union from 'lodash/union';
|
||||||
|
|
||||||
import { from as observableFrom, Observable, of as observableOf } from 'rxjs';
|
import {from as observableFrom, Observable, of as observableOf} from 'rxjs';
|
||||||
import { catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';
|
import {catchError, filter, map, mergeMap, switchMap, take, tap, withLatestFrom} from 'rxjs/operators';
|
||||||
import { SubmissionObject } from '../../core/submission/models/submission-object.model';
|
import {SubmissionObject} from '../../core/submission/models/submission-object.model';
|
||||||
import { WorkflowItem } from '../../core/submission/models/workflowitem.model';
|
import {WorkflowItem} from '../../core/submission/models/workflowitem.model';
|
||||||
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
|
import {WorkspaceitemSectionUploadObject} from '../../core/submission/models/workspaceitem-section-upload.model';
|
||||||
import { WorkspaceitemSectionsObject } from '../../core/submission/models/workspaceitem-sections.model';
|
import {WorkspaceitemSectionsObject} from '../../core/submission/models/workspaceitem-sections.model';
|
||||||
import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model';
|
import {WorkspaceItem} from '../../core/submission/models/workspaceitem.model';
|
||||||
import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service';
|
import {SubmissionJsonPatchOperationsService} from '../../core/submission/submission-json-patch-operations.service';
|
||||||
import { isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
import {isEmpty, isNotEmpty, isNotUndefined} from '../../shared/empty.util';
|
||||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
import {NotificationsService} from '../../shared/notifications/notifications.service';
|
||||||
import { SectionsType } from '../sections/sections-type';
|
import {SectionsType} from '../sections/sections-type';
|
||||||
import { SectionsService } from '../sections/sections.service';
|
import {SectionsService} from '../sections/sections.service';
|
||||||
import { SubmissionState } from '../submission.reducers';
|
import {SubmissionState} from '../submission.reducers';
|
||||||
import { SubmissionService } from '../submission.service';
|
import {SubmissionService} from '../submission.service';
|
||||||
import parseSectionErrors from '../utils/parseSectionErrors';
|
import parseSectionErrors from '../utils/parseSectionErrors';
|
||||||
import {
|
import {
|
||||||
CompleteInitSubmissionFormAction,
|
CompleteInitSubmissionFormAction,
|
||||||
@@ -45,16 +45,19 @@ import {
|
|||||||
UpdateSectionDataAction,
|
UpdateSectionDataAction,
|
||||||
UpdateSectionDataSuccessAction
|
UpdateSectionDataSuccessAction
|
||||||
} from './submission-objects.actions';
|
} from './submission-objects.actions';
|
||||||
import { SubmissionObjectEntry } from './submission-objects.reducer';
|
import {SubmissionObjectEntry} from './submission-objects.reducer';
|
||||||
import { Item } from '../../core/shared/item.model';
|
import {Item} from '../../core/shared/item.model';
|
||||||
import { RemoteData } from '../../core/data/remote-data';
|
import {RemoteData} from '../../core/data/remote-data';
|
||||||
import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators';
|
import {getFirstSucceededRemoteDataPayload} from '../../core/shared/operators';
|
||||||
import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service';
|
import {SubmissionObjectDataService} from '../../core/submission/submission-object-data.service';
|
||||||
import { followLink } from '../../shared/utils/follow-link-config.model';
|
import {followLink} from '../../shared/utils/follow-link-config.model';
|
||||||
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
|
import parseSectionErrorPaths, {SectionErrorPath} from '../utils/parseSectionErrorPaths';
|
||||||
import { FormState } from '../../shared/form/form.reducer';
|
import {FormState} from '../../shared/form/form.reducer';
|
||||||
import { SubmissionSectionObject } from './submission-section-object.model';
|
import {SubmissionSectionObject} from './submission-section-object.model';
|
||||||
import { SubmissionSectionError } from './submission-section-error.model';
|
import {SubmissionSectionError} from './submission-section-error.model';
|
||||||
|
import {
|
||||||
|
WorkspaceitemSectionDuplicatesObject
|
||||||
|
} from '../../core/submission/models/workspaceitem-section-duplicates.model';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SubmissionObjectEffects {
|
export class SubmissionObjectEffects {
|
||||||
@@ -71,7 +74,11 @@ export class SubmissionObjectEffects {
|
|||||||
const selfLink = sectionDefinition._links.self.href || sectionDefinition._links.self;
|
const selfLink = sectionDefinition._links.self.href || sectionDefinition._links.self;
|
||||||
const sectionId = selfLink.substr(selfLink.lastIndexOf('/') + 1);
|
const sectionId = selfLink.substr(selfLink.lastIndexOf('/') + 1);
|
||||||
const config = sectionDefinition._links.config ? (sectionDefinition._links.config.href || sectionDefinition._links.config) : '';
|
const config = sectionDefinition._links.config ? (sectionDefinition._links.config.href || sectionDefinition._links.config) : '';
|
||||||
const enabled = (sectionDefinition.mandatory) || (isNotEmpty(action.payload.sections) && action.payload.sections.hasOwnProperty(sectionId));
|
// A section is enabled if it is mandatory (except duplicate detection) or contains data in its section payload
|
||||||
|
const enabled = (sectionDefinition.mandatory && (sectionDefinition.sectionType !== SectionsType.Duplicates))
|
||||||
|
|| (isNotEmpty(action.payload.sections) && action.payload.sections.hasOwnProperty(sectionId)
|
||||||
|
&& (sectionDefinition.sectionType === SectionsType.Duplicates && isNotEmpty((action.payload.sections[sectionId] as WorkspaceitemSectionDuplicatesObject).potentialDuplicates))
|
||||||
|
);
|
||||||
let sectionData;
|
let sectionData;
|
||||||
if (sectionDefinition.sectionType !== SectionsType.SubmissionForm) {
|
if (sectionDefinition.sectionType !== SectionsType.SubmissionForm) {
|
||||||
sectionData = (isNotUndefined(action.payload.sections) && isNotUndefined(action.payload.sections[sectionId])) ? action.payload.sections[sectionId] : Object.create(null);
|
sectionData = (isNotUndefined(action.payload.sections) && isNotUndefined(action.payload.sections[sectionId])) ? action.payload.sections[sectionId] : Object.create(null);
|
||||||
@@ -434,8 +441,13 @@ export class SubmissionObjectEffects {
|
|||||||
&& isEmpty(sections[sherpaPoliciesSectionId])) {
|
&& isEmpty(sections[sherpaPoliciesSectionId])) {
|
||||||
mappedActions.push(new UpdateSectionDataAction(submissionId, sherpaPoliciesSectionId, null, [], []));
|
mappedActions.push(new UpdateSectionDataAction(submissionId, sherpaPoliciesSectionId, null, [], []));
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
|
// When Duplicate Detection step is enabled, add it only if there are duplicates
|
||||||
|
const duplicatesSectionId = findKey(currentState.sections, (section) => section.sectionType === SectionsType.Duplicates);
|
||||||
|
if (isNotUndefined(duplicatesSectionId) && isNotEmpty(currentState.sections[duplicatesSectionId]?.data) && isEmpty(sections[duplicatesSectionId])) {
|
||||||
|
mappedActions.push(new UpdateSectionDataAction(submissionId, duplicatesSectionId, null, [], []));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return mappedActions;
|
return mappedActions;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user