mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-17 15:03:07 +00:00
Added more tests and bug fixes
This commit is contained in:
@@ -218,7 +218,7 @@ function newOperation(state: JsonPatchOperationsState, action): JsonPatchOperati
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an LoadSubmissionFormAction
|
* an FlushPatchOperationsAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the section new validity status.
|
* the new state, with the section new validity status.
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,12 @@
|
|||||||
import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
|
||||||
|
import { isObject } from 'lodash';
|
||||||
|
|
||||||
|
export function isDateObject(value) {
|
||||||
|
return isObject(value) && value.hasOwnProperty('day')
|
||||||
|
&& value.hasOwnProperty('month') && value.hasOwnProperty('year');
|
||||||
|
}
|
||||||
|
|
||||||
export function dateToGMTString(date: Date | NgbDateStruct) {
|
export function dateToGMTString(date: Date | NgbDateStruct) {
|
||||||
let year = ((date instanceof Date) ? date.getFullYear() : date.year).toString();
|
let year = ((date instanceof Date) ? date.getFullYear() : date.year).toString();
|
||||||
let month = ((date instanceof Date) ? date.getMonth() + 1 : date.month).toString();
|
let month = ((date instanceof Date) ? date.getMonth() + 1 : date.month).toString();
|
||||||
|
@@ -28,6 +28,7 @@ import { RowParser } from './parsers/row-parser';
|
|||||||
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
|
import { DynamicRowArrayModel } from './ds-dynamic-form-ui/models/ds-dynamic-row-array-model';
|
||||||
import { DsDynamicInputModel } from './ds-dynamic-form-ui/models/ds-dynamic-input.model';
|
import { DsDynamicInputModel } from './ds-dynamic-form-ui/models/ds-dynamic-input.model';
|
||||||
import { FormFieldMetadataValueObject } from './models/form-field-metadata-value.model';
|
import { FormFieldMetadataValueObject } from './models/form-field-metadata-value.model';
|
||||||
|
import { isDateObject } from '../../date.util';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FormBuilderService extends DynamicFormService {
|
export class FormBuilderService extends DynamicFormService {
|
||||||
@@ -108,8 +109,12 @@ export class FormBuilderService extends DynamicFormService {
|
|||||||
} else if (isObject(controlValue)) {
|
} else if (isObject(controlValue)) {
|
||||||
const authority = controlValue.authority || controlValue.id || null;
|
const authority = controlValue.authority || controlValue.id || null;
|
||||||
const place = controlModelIndex || controlValue.place;
|
const place = controlModelIndex || controlValue.place;
|
||||||
|
if (isDateObject(controlValue)) {
|
||||||
|
return new FormFieldMetadataValueObject(controlValue, controlLanguage, authority, controlValue, place);
|
||||||
|
} else {
|
||||||
return new FormFieldMetadataValueObject(controlValue.value, controlLanguage, authority, controlValue.display, place);
|
return new FormFieldMetadataValueObject(controlValue.value, controlLanguage, authority, controlValue.display, place);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const iterateControlModels = (findGroupModel: DynamicFormControlModel[], controlModelIndex: number = 0): void => {
|
const iterateControlModels = (findGroupModel: DynamicFormControlModel[], controlModelIndex: number = 0): void => {
|
||||||
|
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChange
|
|||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import {
|
import {
|
||||||
CancelSubmissionFormAction,
|
CancelSubmissionFormAction,
|
||||||
LoadSubmissionFormAction,
|
InitSubmissionFormAction,
|
||||||
ResetSubmissionFormAction
|
ResetSubmissionFormAction
|
||||||
} from '../objects/submission-objects.actions';
|
} from '../objects/submission-objects.actions';
|
||||||
import { hasValue, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
import { hasValue, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
||||||
@@ -85,7 +85,7 @@ export class SubmissionFormComponent implements OnChanges, OnDestroy {
|
|||||||
this.uploadFilesOptions.authToken = this.authService.buildAuthHeader();
|
this.uploadFilesOptions.authToken = this.authService.buildAuthHeader();
|
||||||
this.uploadFilesOptions.url = endpointURL.concat(`/${this.submissionId}`);
|
this.uploadFilesOptions.url = endpointURL.concat(`/${this.submissionId}`);
|
||||||
this.definitionId = this.submissionDefinition.name;
|
this.definitionId = this.submissionDefinition.name;
|
||||||
this.store.dispatch(new LoadSubmissionFormAction(this.collectionId, this.submissionId, this.selfUrl, this.submissionDefinition, this.sections, null));
|
this.store.dispatch(new InitSubmissionFormAction(this.collectionId, this.submissionId, this.selfUrl, this.submissionDefinition, this.sections, null));
|
||||||
this.changeDetectorRef.detectChanges();
|
this.changeDetectorRef.detectChanges();
|
||||||
}),
|
}),
|
||||||
|
|
||||||
@@ -132,8 +132,6 @@ export class SubmissionFormComponent implements OnChanges, OnDestroy {
|
|||||||
protected getSectionsList(): Observable<any> {
|
protected getSectionsList(): Observable<any> {
|
||||||
return this.submissionService.getSubmissionSections(this.submissionId)
|
return this.submissionService.getSubmissionSections(this.submissionId)
|
||||||
.filter((sections: SectionDataObject[]) => isNotEmpty(sections))
|
.filter((sections: SectionDataObject[]) => isNotEmpty(sections))
|
||||||
.map((sections: SectionDataObject[]) => {
|
.map((sections: SectionDataObject[]) => sections);
|
||||||
return sections;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,10 +24,9 @@ import { SectionsType } from '../sections/sections-type';
|
|||||||
*/
|
*/
|
||||||
export const SubmissionObjectActionTypes = {
|
export const SubmissionObjectActionTypes = {
|
||||||
// Section types
|
// Section types
|
||||||
LOAD_SUBMISSION_FORM: type('dspace/submission/LOAD_SUBMISSION_FORM'),
|
INIT_SUBMISSION_FORM: type('dspace/submission/INIT_SUBMISSION_FORM'),
|
||||||
RESET_SUBMISSION_FORM: type('dspace/submission/RESET_SUBMISSION_FORM'),
|
RESET_SUBMISSION_FORM: type('dspace/submission/RESET_SUBMISSION_FORM'),
|
||||||
CANCEL_SUBMISSION_FORM: type('dspace/submission/CANCEL_SUBMISSION_FORM'),
|
CANCEL_SUBMISSION_FORM: type('dspace/submission/CANCEL_SUBMISSION_FORM'),
|
||||||
INIT_SUBMISSION_FORM: type('dspace/submission/INIT_SUBMISSION_FORM'),
|
|
||||||
COMPLETE_INIT_SUBMISSION_FORM: type('dspace/submission/COMPLETE_INIT_SUBMISSION_FORM'),
|
COMPLETE_INIT_SUBMISSION_FORM: type('dspace/submission/COMPLETE_INIT_SUBMISSION_FORM'),
|
||||||
SAVE_FOR_LATER_SUBMISSION_FORM: type('dspace/submission/SAVE_FOR_LATER_SUBMISSION_FORM'),
|
SAVE_FOR_LATER_SUBMISSION_FORM: type('dspace/submission/SAVE_FOR_LATER_SUBMISSION_FORM'),
|
||||||
SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS: type('dspace/submission/SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS'),
|
SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS: type('dspace/submission/SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS'),
|
||||||
@@ -38,7 +37,6 @@ export const SubmissionObjectActionTypes = {
|
|||||||
SAVE_SUBMISSION_SECTION_FORM: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM'),
|
SAVE_SUBMISSION_SECTION_FORM: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM'),
|
||||||
SAVE_SUBMISSION_SECTION_FORM_SUCCESS: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM_SUCCESS'),
|
SAVE_SUBMISSION_SECTION_FORM_SUCCESS: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM_SUCCESS'),
|
||||||
SAVE_SUBMISSION_SECTION_FORM_ERROR: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM_ERROR'),
|
SAVE_SUBMISSION_SECTION_FORM_ERROR: type('dspace/submission/SAVE_SUBMISSION_SECTION_FORM_ERROR'),
|
||||||
COMPLETE_SAVE_SUBMISSION_FORM: type('dspace/submission/COMPLETE_SAVE_SUBMISSION_FORM'),
|
|
||||||
CHANGE_SUBMISSION_COLLECTION: type('dspace/submission/CHANGE_SUBMISSION_COLLECTION'),
|
CHANGE_SUBMISSION_COLLECTION: type('dspace/submission/CHANGE_SUBMISSION_COLLECTION'),
|
||||||
SET_ACTIVE_SECTION: type('dspace/submission/SET_ACTIVE_SECTION'),
|
SET_ACTIVE_SECTION: type('dspace/submission/SET_ACTIVE_SECTION'),
|
||||||
INIT_SECTION: type('dspace/submission/INIT_SECTION'),
|
INIT_SECTION: type('dspace/submission/INIT_SECTION'),
|
||||||
@@ -47,7 +45,6 @@ export const SubmissionObjectActionTypes = {
|
|||||||
SECTION_STATUS_CHANGE: type('dspace/submission/SECTION_STATUS_CHANGE'),
|
SECTION_STATUS_CHANGE: type('dspace/submission/SECTION_STATUS_CHANGE'),
|
||||||
SECTION_LOADING_STATUS_CHANGE: type('dspace/submission/SECTION_LOADING_STATUS_CHANGE'),
|
SECTION_LOADING_STATUS_CHANGE: type('dspace/submission/SECTION_LOADING_STATUS_CHANGE'),
|
||||||
UPLOAD_SECTION_DATA: type('dspace/submission/UPLOAD_SECTION_DATA'),
|
UPLOAD_SECTION_DATA: type('dspace/submission/UPLOAD_SECTION_DATA'),
|
||||||
REMOVE_SECTION_ERRORS: type('dspace/submission/REMOVE_SECTION_ERRORS'),
|
|
||||||
SAVE_AND_DEPOSIT_SUBMISSION: type('dspace/submission/SAVE_AND_DEPOSIT_SUBMISSION'),
|
SAVE_AND_DEPOSIT_SUBMISSION: type('dspace/submission/SAVE_AND_DEPOSIT_SUBMISSION'),
|
||||||
DEPOSIT_SUBMISSION: type('dspace/submission/DEPOSIT_SUBMISSION'),
|
DEPOSIT_SUBMISSION: type('dspace/submission/DEPOSIT_SUBMISSION'),
|
||||||
DEPOSIT_SUBMISSION_SUCCESS: type('dspace/submission/DEPOSIT_SUBMISSION_SUCCESS'),
|
DEPOSIT_SUBMISSION_SUCCESS: type('dspace/submission/DEPOSIT_SUBMISSION_SUCCESS'),
|
||||||
@@ -68,9 +65,9 @@ export const SubmissionObjectActionTypes = {
|
|||||||
DELETE_FILE: type('dspace/submission/DELETE_FILE'),
|
DELETE_FILE: type('dspace/submission/DELETE_FILE'),
|
||||||
|
|
||||||
// Errors
|
// Errors
|
||||||
INSERT_ERRORS: type('dspace/submission/INSERT_ERRORS'),
|
ADD_SECTION_ERROR: type('dspace/submission/ADD_SECTION_ERROR'),
|
||||||
DELETE_ERRORS: type('dspace/submission/DELETE_ERRORS'),
|
DELETE_SECTION_ERROR: type('dspace/submission/DELETE_SECTION_ERROR'),
|
||||||
CLEAR_ERRORS: type('dspace/submission/CLEAR_ERRORS'),
|
REMOVE_SECTION_ERRORS: type('dspace/submission/REMOVE_SECTION_ERRORS'),
|
||||||
};
|
};
|
||||||
|
|
||||||
/* tslint:disable:max-classes-per-file */
|
/* tslint:disable:max-classes-per-file */
|
||||||
@@ -82,7 +79,7 @@ export const SubmissionObjectActionTypes = {
|
|||||||
* @param {SubmissionSectionError} error
|
* @param {SubmissionSectionError} error
|
||||||
*/
|
*/
|
||||||
export class InertSectionErrorsAction implements Action {
|
export class InertSectionErrorsAction implements Action {
|
||||||
type: string = SubmissionObjectActionTypes.INSERT_ERRORS;
|
type: string = SubmissionObjectActionTypes.ADD_SECTION_ERROR;
|
||||||
payload: {
|
payload: {
|
||||||
submissionId: string;
|
submissionId: string;
|
||||||
sectionId: string;
|
sectionId: string;
|
||||||
@@ -101,32 +98,15 @@ export class InertSectionErrorsAction implements Action {
|
|||||||
* @param {string | SubmissionSectionError} error
|
* @param {string | SubmissionSectionError} error
|
||||||
*/
|
*/
|
||||||
export class DeleteSectionErrorsAction implements Action {
|
export class DeleteSectionErrorsAction implements Action {
|
||||||
type: string = SubmissionObjectActionTypes.DELETE_ERRORS;
|
type: string = SubmissionObjectActionTypes.DELETE_SECTION_ERROR;
|
||||||
payload: {
|
payload: {
|
||||||
submissionId: string;
|
submissionId: string;
|
||||||
sectionId: string;
|
sectionId: string;
|
||||||
error: string | SubmissionSectionError | SubmissionSectionError[];
|
errors: SubmissionSectionError | SubmissionSectionError[];
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(submissionId: string, sectionId: string, error: string | SubmissionSectionError | SubmissionSectionError[]) {
|
constructor(submissionId: string, sectionId: string, errors: SubmissionSectionError | SubmissionSectionError[]) {
|
||||||
this.payload = { submissionId, sectionId, error };
|
this.payload = { submissionId, sectionId, errors };
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear all the errors from the given section
|
|
||||||
* @param {string} submissionId
|
|
||||||
* @param {string} sectionId
|
|
||||||
*/
|
|
||||||
export class ClearSectionErrorsAction implements Action {
|
|
||||||
type: string = SubmissionObjectActionTypes.CLEAR_ERRORS;
|
|
||||||
payload: {
|
|
||||||
submissionId: string;
|
|
||||||
sectionId: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
constructor(submissionId: string, sectionId: string) {
|
|
||||||
this.payload = { submissionId, sectionId }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,39 +253,6 @@ export class RemoveSectionErrorsAction implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class InitSubmissionFormAction implements Action {
|
|
||||||
type = SubmissionObjectActionTypes.INIT_SUBMISSION_FORM;
|
|
||||||
payload: {
|
|
||||||
collectionId: string;
|
|
||||||
definitionId: string;
|
|
||||||
submissionId: string;
|
|
||||||
selfUrl: string;
|
|
||||||
sections: WorkspaceitemSectionsObject;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new InitSubmissionFormAction
|
|
||||||
*
|
|
||||||
* @param collectionId
|
|
||||||
* the collection's Id where to deposit
|
|
||||||
* @param definitionId
|
|
||||||
* the definition's ID to use
|
|
||||||
* @param submissionId
|
|
||||||
* the submission's ID
|
|
||||||
* @param selfUrl
|
|
||||||
* the submission's self url
|
|
||||||
* @param sections
|
|
||||||
* the submission's sections
|
|
||||||
*/
|
|
||||||
constructor(collectionId: string,
|
|
||||||
definitionId: string,
|
|
||||||
submissionId: string,
|
|
||||||
selfUrl: string,
|
|
||||||
sections: WorkspaceitemSectionsObject) {
|
|
||||||
this.payload = { collectionId, definitionId, submissionId, selfUrl, sections };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Submission actions
|
// Submission actions
|
||||||
|
|
||||||
export class CompleteInitSubmissionFormAction implements Action {
|
export class CompleteInitSubmissionFormAction implements Action {
|
||||||
@@ -325,8 +272,8 @@ export class CompleteInitSubmissionFormAction implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LoadSubmissionFormAction implements Action {
|
export class InitSubmissionFormAction implements Action {
|
||||||
type = SubmissionObjectActionTypes.LOAD_SUBMISSION_FORM;
|
type = SubmissionObjectActionTypes.INIT_SUBMISSION_FORM;
|
||||||
payload: {
|
payload: {
|
||||||
collectionId: string;
|
collectionId: string;
|
||||||
submissionId: string;
|
submissionId: string;
|
||||||
@@ -337,7 +284,7 @@ export class LoadSubmissionFormAction implements Action {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new LoadSubmissionFormAction
|
* Create a new InitSubmissionFormAction
|
||||||
*
|
*
|
||||||
* @param collectionId
|
* @param collectionId
|
||||||
* the collection's Id where to deposit
|
* the collection's Id where to deposit
|
||||||
@@ -527,23 +474,6 @@ export class SaveSubmissionSectionFormErrorAction implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CompleteSaveSubmissionFormAction implements Action {
|
|
||||||
type = SubmissionObjectActionTypes.COMPLETE_SAVE_SUBMISSION_FORM;
|
|
||||||
payload: {
|
|
||||||
submissionId: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new CompleteSaveSubmissionFormAction
|
|
||||||
*
|
|
||||||
* @param submissionId
|
|
||||||
* the submission's ID
|
|
||||||
*/
|
|
||||||
constructor(submissionId: string) {
|
|
||||||
this.payload = { submissionId };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class ResetSubmissionFormAction implements Action {
|
export class ResetSubmissionFormAction implements Action {
|
||||||
type = SubmissionObjectActionTypes.RESET_SUBMISSION_FORM;
|
type = SubmissionObjectActionTypes.RESET_SUBMISSION_FORM;
|
||||||
payload: {
|
payload: {
|
||||||
@@ -555,7 +485,7 @@ export class ResetSubmissionFormAction implements Action {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new LoadSubmissionFormAction
|
* Create a new ResetSubmissionFormAction
|
||||||
*
|
*
|
||||||
* @param collectionId
|
* @param collectionId
|
||||||
* the collection's Id where to deposit
|
* the collection's Id where to deposit
|
||||||
@@ -737,29 +667,6 @@ export class SectionStatusChangeAction implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SectionLoadingStatusChangeAction implements Action {
|
|
||||||
type = SubmissionObjectActionTypes.SECTION_LOADING_STATUS_CHANGE;
|
|
||||||
payload: {
|
|
||||||
submissionId: string;
|
|
||||||
sectionId: string;
|
|
||||||
loading: boolean
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Change the section loading status
|
|
||||||
*
|
|
||||||
* @param submissionId
|
|
||||||
* the submission's ID
|
|
||||||
* @param sectionId
|
|
||||||
* the section's ID to change
|
|
||||||
* @param loading
|
|
||||||
* the section loading status (true if is loading)
|
|
||||||
*/
|
|
||||||
constructor(submissionId: string, sectionId: string, loading: boolean) {
|
|
||||||
this.payload = { submissionId, sectionId, loading };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class SetActiveSectionAction implements Action {
|
export class SetActiveSectionAction implements Action {
|
||||||
type = SubmissionObjectActionTypes.SET_ACTIVE_SECTION;
|
type = SubmissionObjectActionTypes.SET_ACTIVE_SECTION;
|
||||||
payload: {
|
payload: {
|
||||||
@@ -803,7 +710,7 @@ export class NewUploadedFileAction implements Action {
|
|||||||
* the metadata of the new bitstream
|
* the metadata of the new bitstream
|
||||||
*/
|
*/
|
||||||
constructor(submissionId: string, sectionId: string, fileId: string, data: WorkspaceitemSectionUploadFileObject) {
|
constructor(submissionId: string, sectionId: string, fileId: string, data: WorkspaceitemSectionUploadFileObject) {
|
||||||
this.payload = { submissionId, sectionId, fileId: fileId, data };
|
this.payload = { submissionId, sectionId, fileId, data };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -991,10 +898,9 @@ export class SetWorkflowDuplicatedErrorAction implements Action {
|
|||||||
export type SubmissionObjectAction = DisableSectionAction
|
export type SubmissionObjectAction = DisableSectionAction
|
||||||
| InitSectionAction
|
| InitSectionAction
|
||||||
| EnableSectionAction
|
| EnableSectionAction
|
||||||
| LoadSubmissionFormAction
|
| InitSubmissionFormAction
|
||||||
| ResetSubmissionFormAction
|
| ResetSubmissionFormAction
|
||||||
| CancelSubmissionFormAction
|
| CancelSubmissionFormAction
|
||||||
| InitSubmissionFormAction
|
|
||||||
| CompleteInitSubmissionFormAction
|
| CompleteInitSubmissionFormAction
|
||||||
| ChangeSubmissionCollectionAction
|
| ChangeSubmissionCollectionAction
|
||||||
| SaveAndDepositSubmissionAction
|
| SaveAndDepositSubmissionAction
|
||||||
@@ -1010,7 +916,6 @@ export type SubmissionObjectAction = DisableSectionAction
|
|||||||
| DeleteUploadedFileAction
|
| DeleteUploadedFileAction
|
||||||
| InertSectionErrorsAction
|
| InertSectionErrorsAction
|
||||||
| DeleteSectionErrorsAction
|
| DeleteSectionErrorsAction
|
||||||
| ClearSectionErrorsAction
|
|
||||||
| UpdateSectionDataAction
|
| UpdateSectionDataAction
|
||||||
| RemoveSectionErrorsAction
|
| RemoveSectionErrorsAction
|
||||||
| SaveForLaterSubmissionFormAction
|
| SaveForLaterSubmissionFormAction
|
||||||
@@ -1022,7 +927,6 @@ export type SubmissionObjectAction = DisableSectionAction
|
|||||||
| SaveSubmissionSectionFormAction
|
| SaveSubmissionSectionFormAction
|
||||||
| SaveSubmissionSectionFormSuccessAction
|
| SaveSubmissionSectionFormSuccessAction
|
||||||
| SaveSubmissionSectionFormErrorAction
|
| SaveSubmissionSectionFormErrorAction
|
||||||
| CompleteSaveSubmissionFormAction
|
|
||||||
| SetActiveSectionAction
|
| SetActiveSectionAction
|
||||||
| SetWorkspaceDuplicatedAction
|
| SetWorkspaceDuplicatedAction
|
||||||
| SetWorkspaceDuplicatedSuccessAction
|
| SetWorkspaceDuplicatedSuccessAction
|
||||||
|
@@ -11,7 +11,7 @@ import {
|
|||||||
DiscardSubmissionErrorAction,
|
DiscardSubmissionErrorAction,
|
||||||
DiscardSubmissionSuccessAction,
|
DiscardSubmissionSuccessAction,
|
||||||
InitSectionAction,
|
InitSectionAction,
|
||||||
LoadSubmissionFormAction,
|
InitSubmissionFormAction,
|
||||||
ResetSubmissionFormAction,
|
ResetSubmissionFormAction,
|
||||||
SaveAndDepositSubmissionAction,
|
SaveAndDepositSubmissionAction,
|
||||||
SaveForLaterSubmissionFormAction,
|
SaveForLaterSubmissionFormAction,
|
||||||
@@ -53,8 +53,8 @@ import parseSectionErrors from '../utils/parseSectionErrors';
|
|||||||
export class SubmissionObjectEffects {
|
export class SubmissionObjectEffects {
|
||||||
|
|
||||||
@Effect() loadForm$ = this.actions$
|
@Effect() loadForm$ = this.actions$
|
||||||
.ofType(SubmissionObjectActionTypes.LOAD_SUBMISSION_FORM)
|
.ofType(SubmissionObjectActionTypes.INIT_SUBMISSION_FORM)
|
||||||
.map((action: LoadSubmissionFormAction) => {
|
.map((action: InitSubmissionFormAction) => {
|
||||||
const definition = action.payload.submissionDefinition;
|
const definition = action.payload.submissionDefinition;
|
||||||
const mappedActions = [];
|
const mappedActions = [];
|
||||||
definition.sections.forEach((sectionDefinition: SubmissionSectionModel, index: number) => {
|
definition.sections.forEach((sectionDefinition: SubmissionSectionModel, index: number) => {
|
||||||
@@ -90,7 +90,7 @@ export class SubmissionObjectEffects {
|
|||||||
@Effect() resetForm$ = this.actions$
|
@Effect() resetForm$ = this.actions$
|
||||||
.ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM)
|
.ofType(SubmissionObjectActionTypes.RESET_SUBMISSION_FORM)
|
||||||
.map((action: ResetSubmissionFormAction) =>
|
.map((action: ResetSubmissionFormAction) =>
|
||||||
new LoadSubmissionFormAction(
|
new InitSubmissionFormAction(
|
||||||
action.payload.collectionId,
|
action.payload.collectionId,
|
||||||
action.payload.submissionId,
|
action.payload.submissionId,
|
||||||
action.payload.selfUrl,
|
action.payload.selfUrl,
|
||||||
@@ -331,7 +331,7 @@ export class SubmissionObjectEffects {
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
// mappedActions.push(new CompleteSaveSubmissionFormAction(submissionId));
|
|
||||||
return mappedActions;
|
return mappedActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1254
src/app/submission/objects/submission-objects.reducer.spec.ts
Normal file
1254
src/app/submission/objects/submission-objects.reducer.spec.ts
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,22 +1,39 @@
|
|||||||
import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../shared/empty.util';
|
import { hasValue, isNotEmpty, isNotNull, isUndefined } from '../../shared/empty.util';
|
||||||
import { findKey, uniqWith, isEqual, differenceWith } from 'lodash';
|
import { findKey, uniqWith, isEqual, differenceWith } from 'lodash';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
CompleteInitSubmissionFormAction,
|
CompleteInitSubmissionFormAction,
|
||||||
DeleteUploadedFileAction,
|
DeleteUploadedFileAction,
|
||||||
DisableSectionAction, EditFileDataAction,
|
DisableSectionAction,
|
||||||
EnableSectionAction, NewUploadedFileAction,
|
EditFileDataAction,
|
||||||
LoadSubmissionFormAction, SectionStatusChangeAction,
|
EnableSectionAction,
|
||||||
|
NewUploadedFileAction,
|
||||||
|
InitSubmissionFormAction,
|
||||||
|
SectionStatusChangeAction,
|
||||||
SubmissionObjectAction,
|
SubmissionObjectAction,
|
||||||
SubmissionObjectActionTypes, ClearSectionErrorsAction, InertSectionErrorsAction,
|
SubmissionObjectActionTypes,
|
||||||
DeleteSectionErrorsAction, ResetSubmissionFormAction, UpdateSectionDataAction, SaveSubmissionFormAction,
|
InertSectionErrorsAction,
|
||||||
CompleteSaveSubmissionFormAction, SetActiveSectionAction, SaveSubmissionSectionFormAction,
|
DeleteSectionErrorsAction,
|
||||||
DepositSubmissionAction, DepositSubmissionSuccessAction, DepositSubmissionErrorAction,
|
ResetSubmissionFormAction,
|
||||||
ChangeSubmissionCollectionAction, SaveSubmissionFormSuccessAction, SaveSubmissionFormErrorAction,
|
UpdateSectionDataAction,
|
||||||
SaveSubmissionSectionFormSuccessAction, SaveSubmissionSectionFormErrorAction, SetWorkspaceDuplicatedAction,
|
SaveSubmissionFormAction,
|
||||||
SetWorkflowDuplicatedAction, InitSectionAction, RemoveSectionErrorsAction
|
SetActiveSectionAction,
|
||||||
|
SaveSubmissionSectionFormAction,
|
||||||
|
DepositSubmissionAction,
|
||||||
|
DepositSubmissionSuccessAction,
|
||||||
|
DepositSubmissionErrorAction,
|
||||||
|
ChangeSubmissionCollectionAction,
|
||||||
|
SaveSubmissionFormSuccessAction,
|
||||||
|
SaveSubmissionFormErrorAction,
|
||||||
|
SaveSubmissionSectionFormSuccessAction,
|
||||||
|
SaveSubmissionSectionFormErrorAction,
|
||||||
|
SetWorkspaceDuplicatedAction,
|
||||||
|
SetWorkflowDuplicatedAction,
|
||||||
|
InitSectionAction,
|
||||||
|
RemoveSectionErrorsAction,
|
||||||
|
SaveForLaterSubmissionFormAction,
|
||||||
|
SaveAndDepositSubmissionAction, SaveForLaterSubmissionFormSuccessAction, SaveForLaterSubmissionFormErrorAction
|
||||||
} from './submission-objects.actions';
|
} from './submission-objects.actions';
|
||||||
import { deleteProperty } from '../../shared/object.util';
|
|
||||||
import { WorkspaceitemSectionDataType } from '../../core/submission/models/workspaceitem-sections.model';
|
import { WorkspaceitemSectionDataType } from '../../core/submission/models/workspaceitem-sections.model';
|
||||||
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
|
import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model';
|
||||||
import { SectionsType } from '../sections/sections-type';
|
import { SectionsType } from '../sections/sections-type';
|
||||||
@@ -76,16 +93,12 @@ export function submissionObjectReducer(state = initialState, action: Submission
|
|||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
|
|
||||||
// submission form actions
|
// submission form actions
|
||||||
case SubmissionObjectActionTypes.INIT_SUBMISSION_FORM: {
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.COMPLETE_INIT_SUBMISSION_FORM: {
|
case SubmissionObjectActionTypes.COMPLETE_INIT_SUBMISSION_FORM: {
|
||||||
return completeInit(state, action as CompleteInitSubmissionFormAction);
|
return completeInit(state, action as CompleteInitSubmissionFormAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.LOAD_SUBMISSION_FORM: {
|
case SubmissionObjectActionTypes.INIT_SUBMISSION_FORM: {
|
||||||
return initSubmission(state, action as LoadSubmissionFormAction);
|
return initSubmission(state, action as InitSubmissionFormAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.RESET_SUBMISSION_FORM: {
|
case SubmissionObjectActionTypes.RESET_SUBMISSION_FORM: {
|
||||||
@@ -98,40 +111,24 @@ export function submissionObjectReducer(state = initialState, action: Submission
|
|||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM:
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM:
|
||||||
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM:
|
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM:
|
||||||
case SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION: {
|
case SubmissionObjectActionTypes.SAVE_AND_DEPOSIT_SUBMISSION:
|
||||||
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM: {
|
||||||
return saveSubmission(state, action as SaveSubmissionFormAction);
|
return saveSubmission(state, action as SaveSubmissionFormAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS:
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_SUCCESS:
|
||||||
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS: {
|
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_SUCCESS:
|
||||||
return completeSave(state, action as SaveSubmissionFormSuccessAction);
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS:
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_ERROR:
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_FORM_ERROR:
|
||||||
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_ERROR: {
|
case SubmissionObjectActionTypes.SAVE_FOR_LATER_SUBMISSION_FORM_ERROR:
|
||||||
return completeSave(state, action as SaveSubmissionFormErrorAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM: {
|
|
||||||
return saveSubmission(state, action as SaveSubmissionSectionFormAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_SUCCESS: {
|
|
||||||
return completeSave(state, action as SaveSubmissionSectionFormSuccessAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_ERROR: {
|
case SubmissionObjectActionTypes.SAVE_SUBMISSION_SECTION_FORM_ERROR: {
|
||||||
return completeSave(state, action as SaveSubmissionSectionFormErrorAction);
|
return completeSave(state, action as SaveSubmissionFormErrorAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.CHANGE_SUBMISSION_COLLECTION: {
|
case SubmissionObjectActionTypes.CHANGE_SUBMISSION_COLLECTION: {
|
||||||
return changeCollection(state, action as ChangeSubmissionCollectionAction);
|
return changeCollection(state, action as ChangeSubmissionCollectionAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.COMPLETE_SAVE_SUBMISSION_FORM: {
|
|
||||||
return completeSave(state, action as CompleteSaveSubmissionFormAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.DEPOSIT_SUBMISSION: {
|
case SubmissionObjectActionTypes.DEPOSIT_SUBMISSION: {
|
||||||
return startDeposit(state, action as DepositSubmissionAction);
|
return startDeposit(state, action as DepositSubmissionAction);
|
||||||
}
|
}
|
||||||
@@ -174,10 +171,6 @@ export function submissionObjectReducer(state = initialState, action: Submission
|
|||||||
return updateSectionData(state, action as UpdateSectionDataAction);
|
return updateSectionData(state, action as UpdateSectionDataAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.REMOVE_SECTION_ERRORS: {
|
|
||||||
return removeSectionErrors(state, action as RemoveSectionErrorsAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.DISABLE_SECTION: {
|
case SubmissionObjectActionTypes.DISABLE_SECTION: {
|
||||||
return changeSectionState(state, action as DisableSectionAction, false);
|
return changeSectionState(state, action as DisableSectionAction, false);
|
||||||
}
|
}
|
||||||
@@ -209,16 +202,16 @@ export function submissionObjectReducer(state = initialState, action: Submission
|
|||||||
}
|
}
|
||||||
|
|
||||||
// errors actions
|
// errors actions
|
||||||
case SubmissionObjectActionTypes.INSERT_ERRORS: {
|
case SubmissionObjectActionTypes.ADD_SECTION_ERROR: {
|
||||||
return insertError(state, action as InertSectionErrorsAction);
|
return addError(state, action as InertSectionErrorsAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.DELETE_ERRORS: {
|
case SubmissionObjectActionTypes.DELETE_SECTION_ERROR: {
|
||||||
return removeError(state, action as DeleteSectionErrorsAction);
|
return removeError(state, action as DeleteSectionErrorsAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SubmissionObjectActionTypes.CLEAR_ERRORS: {
|
case SubmissionObjectActionTypes.REMOVE_SECTION_ERRORS: {
|
||||||
return clearErrorsFromSection(state, action as ClearSectionErrorsAction);
|
return removeSectionErrors(state, action as RemoveSectionErrorsAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
@@ -230,24 +223,25 @@ export function submissionObjectReducer(state = initialState, action: Submission
|
|||||||
// ------ Submission error functions ------ //
|
// ------ Submission error functions ------ //
|
||||||
|
|
||||||
const removeError = (state: SubmissionObjectState, action: DeleteSectionErrorsAction): SubmissionObjectState => {
|
const removeError = (state: SubmissionObjectState, action: DeleteSectionErrorsAction): SubmissionObjectState => {
|
||||||
const { submissionId, sectionId, error } = action.payload;
|
const { submissionId, sectionId, errors } = action.payload;
|
||||||
|
|
||||||
if (hasValue(state[ submissionId ].sections[ sectionId ])) {
|
if (hasValue(state[ submissionId ].sections[ sectionId ])) {
|
||||||
let errors = state[ submissionId ].sections[ sectionId ].errors.filter((currentError) => {
|
let filteredErrors;
|
||||||
return currentError.message !== error && !isEqual(currentError, error);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (action.payload.error instanceof Array) {
|
if (Array.isArray(errors)) {
|
||||||
errors = differenceWith(errors, action.payload.error, isEqual);
|
filteredErrors = differenceWith(errors, errors, isEqual);
|
||||||
|
} else {
|
||||||
|
filteredErrors = state[ submissionId ].sections[ sectionId ].errors
|
||||||
|
.filter((currentError) => currentError.path !== errors.path || !isEqual(currentError, errors));
|
||||||
}
|
}
|
||||||
|
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ submissionId ]: Object.assign({}, state[ submissionId ], {
|
[ submissionId ]: Object.assign({}, state[ submissionId ], {
|
||||||
sections: Object.assign({}, state[ submissionId ].sections, {
|
sections: Object.assign({}, state[ submissionId ].sections, {
|
||||||
[ sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
[ sectionId ]: Object.assign({}, state[ submissionId ].sections [ sectionId ], {
|
||||||
errors
|
errors: filteredErrors
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}),
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -255,7 +249,7 @@ const removeError = (state: SubmissionObjectState, action: DeleteSectionErrorsAc
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const insertError = (state: SubmissionObjectState, action: InertSectionErrorsAction): SubmissionObjectState => {
|
const addError = (state: SubmissionObjectState, action: InertSectionErrorsAction): SubmissionObjectState => {
|
||||||
const { submissionId, sectionId, error } = action.payload;
|
const { submissionId, sectionId, error } = action.payload;
|
||||||
|
|
||||||
if (hasValue(state[ submissionId ].sections[ sectionId ])) {
|
if (hasValue(state[ submissionId ].sections[ sectionId ])) {
|
||||||
@@ -275,25 +269,32 @@ const insertError = (state: SubmissionObjectState, action: InertSectionErrorsAct
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const clearErrorsFromSection = (state: SubmissionObjectState, action: ClearSectionErrorsAction): SubmissionObjectState => {
|
/**
|
||||||
const { submissionId, sectionId } = action.payload;
|
* Remove all section's errors.
|
||||||
|
*
|
||||||
if (hasValue(state[ submissionId ].sections[ sectionId ])) {
|
* @param state
|
||||||
const errors = []; // clear the errors
|
* the current state
|
||||||
|
* @param action
|
||||||
|
* an RemoveSectionErrorsAction
|
||||||
|
* @return SubmissionObjectState
|
||||||
|
* the new state, with the section's errors updated.
|
||||||
|
*/
|
||||||
|
function removeSectionErrors(state: SubmissionObjectState, action: RemoveSectionErrorsAction): SubmissionObjectState {
|
||||||
|
if (isNotEmpty(state[ action.payload.submissionId ])
|
||||||
|
&& isNotEmpty(state[ action.payload.submissionId ].sections[ action.payload.sectionId])) {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ submissionId ]: Object.assign({}, state[ submissionId ], {
|
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
||||||
sections: Object.assign({}, state[ submissionId ].sections, {
|
sections: Object.assign({}, state[ action.payload.submissionId ].sections, {
|
||||||
[ sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
||||||
errors
|
errors: []
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}),
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
// ------ Submission functions ------ //
|
// ------ Submission functions ------ //
|
||||||
|
|
||||||
@@ -303,11 +304,11 @@ const clearErrorsFromSection = (state: SubmissionObjectState, action: ClearSecti
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an LoadSubmissionFormAction
|
* an InitSubmissionFormAction | ResetSubmissionFormAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the section removed.
|
* the new state, with the section removed.
|
||||||
*/
|
*/
|
||||||
function initSubmission(state: SubmissionObjectState, action: LoadSubmissionFormAction | ResetSubmissionFormAction): SubmissionObjectState {
|
function initSubmission(state: SubmissionObjectState, action: InitSubmissionFormAction | ResetSubmissionFormAction): SubmissionObjectState {
|
||||||
|
|
||||||
const newState = Object.assign({}, state);
|
const newState = Object.assign({}, state);
|
||||||
newState[ action.payload.submissionId ] = {
|
newState[ action.payload.submissionId ] = {
|
||||||
@@ -374,11 +375,16 @@ function completeInit(state: SubmissionObjectState, action: CompleteInitSubmissi
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an SaveSubmissionFormAction
|
* an SaveSubmissionFormAction | SaveSubmissionSectionFormAction
|
||||||
|
* | SaveForLaterSubmissionFormAction | SaveAndDepositSubmissionAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the flag set to true.
|
* the new state, with the flag set to true.
|
||||||
*/
|
*/
|
||||||
function saveSubmission(state: SubmissionObjectState, action: SaveSubmissionFormAction): SubmissionObjectState {
|
function saveSubmission(state: SubmissionObjectState,
|
||||||
|
action: SaveSubmissionFormAction
|
||||||
|
| SaveSubmissionSectionFormAction
|
||||||
|
| SaveForLaterSubmissionFormAction
|
||||||
|
| SaveAndDepositSubmissionAction): SubmissionObjectState {
|
||||||
if (hasValue(state[ action.payload.submissionId ])) {
|
if (hasValue(state[ action.payload.submissionId ])) {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
||||||
@@ -399,15 +405,18 @@ function saveSubmission(state: SubmissionObjectState, action: SaveSubmissionForm
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an CompleteSaveSubmissionFormAction | SaveSubmissionFormSuccessAction | SaveSubmissionFormErrorAction
|
* an SaveSubmissionFormSuccessAction | SaveForLaterSubmissionFormSuccessAction
|
||||||
|
* | SaveSubmissionSectionFormSuccessAction | SaveSubmissionFormErrorAction
|
||||||
|
* | SaveForLaterSubmissionFormErrorAction | SaveSubmissionSectionFormErrorAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the flag set to false.
|
* the new state, with the flag set to false.
|
||||||
*/
|
*/
|
||||||
function completeSave(state: SubmissionObjectState,
|
function completeSave(state: SubmissionObjectState,
|
||||||
action: CompleteSaveSubmissionFormAction
|
action: SaveSubmissionFormSuccessAction
|
||||||
| SaveSubmissionFormSuccessAction
|
| SaveForLaterSubmissionFormSuccessAction
|
||||||
| SaveSubmissionFormErrorAction
|
|
||||||
| SaveSubmissionSectionFormSuccessAction
|
| SaveSubmissionSectionFormSuccessAction
|
||||||
|
| SaveSubmissionFormErrorAction
|
||||||
|
| SaveForLaterSubmissionFormErrorAction
|
||||||
| SaveSubmissionSectionFormErrorAction): SubmissionObjectState {
|
| SaveSubmissionSectionFormErrorAction): SubmissionObjectState {
|
||||||
if (hasValue(state[ action.payload.submissionId ])) {
|
if (hasValue(state[ action.payload.submissionId ])) {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
@@ -471,7 +480,7 @@ function endDeposit(state: SubmissionObjectState, action: DepositSubmissionSucce
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an LoadSubmissionFormAction
|
* an InitSubmissionFormAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the section removed.
|
* the new state, with the section removed.
|
||||||
*/
|
*/
|
||||||
@@ -575,33 +584,6 @@ function updateSectionData(state: SubmissionObjectState, action: UpdateSectionDa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove section's errors.
|
|
||||||
*
|
|
||||||
* @param state
|
|
||||||
* the current state
|
|
||||||
* @param action
|
|
||||||
* an RemoveSectionErrorsAction
|
|
||||||
* @return SubmissionObjectState
|
|
||||||
* the new state, with the section's errors updated.
|
|
||||||
*/
|
|
||||||
function removeSectionErrors(state: SubmissionObjectState, action: RemoveSectionErrorsAction): SubmissionObjectState {
|
|
||||||
if (isNotEmpty(state[ action.payload.submissionId ])
|
|
||||||
&& isNotEmpty(state[ action.payload.submissionId ].sections[ action.payload.sectionId])) {
|
|
||||||
return Object.assign({}, state, {
|
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
|
||||||
sections: Object.assign({}, state[ action.payload.submissionId ].sections, {
|
|
||||||
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
|
||||||
errors: []
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a section state.
|
* Set a section state.
|
||||||
*
|
*
|
||||||
@@ -637,7 +619,7 @@ function changeSectionState(state: SubmissionObjectState, action: EnableSectionA
|
|||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* an LoadSubmissionFormAction
|
* an SectionStatusChangeAction
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the section new validity status.
|
* the new state, with the section new validity status.
|
||||||
*/
|
*/
|
||||||
@@ -662,75 +644,48 @@ function setIsValid(state: SubmissionObjectState, action: SectionStatusChangeAct
|
|||||||
// ------ Upload file functions ------ //
|
// ------ Upload file functions ------ //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a new bitstream.
|
* Set a new file.
|
||||||
*
|
*
|
||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* a NewUploadedFileAction action
|
* a NewUploadedFileAction action
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the new bitstream.
|
* the new state, with the new file.
|
||||||
*/
|
*/
|
||||||
function newFile(state: SubmissionObjectState, action: NewUploadedFileAction): SubmissionObjectState {
|
function newFile(state: SubmissionObjectState, action: NewUploadedFileAction): SubmissionObjectState {
|
||||||
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
||||||
if (isNotUndefined(filesData.files)
|
let newData;
|
||||||
&& !hasValue(filesData.files[ action.payload.fileId ])) {
|
if (isUndefined(filesData.files)) {
|
||||||
const newData = [];
|
newData = {
|
||||||
newData[ action.payload.fileId ] = action.payload.data;
|
files: [action.payload.data]
|
||||||
return Object.assign({}, state, {
|
};
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
|
||||||
activeSection: state[ action.payload.submissionId ].activeSection,
|
|
||||||
sections: Object.assign({}, state[ action.payload.submissionId ].sections,
|
|
||||||
Object.assign({}, {
|
|
||||||
[ action.payload.sectionId ]: {
|
|
||||||
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
|
||||||
files: Object.assign({},
|
|
||||||
filesData.files,
|
|
||||||
newData)
|
|
||||||
}),
|
|
||||||
isValid: state[ action.payload.submissionId ].sections[ action.payload.sectionId ].isValid,
|
|
||||||
errors: state[ action.payload.submissionId ].sections[ action.payload.sectionId ].errors
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
),
|
|
||||||
isLoading: state[ action.payload.submissionId ].isLoading,
|
|
||||||
savePending: state[ action.payload.submissionId ].savePending,
|
|
||||||
})
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
const newData = [];
|
newData = filesData;
|
||||||
newData[ action.payload.fileId ] = action.payload.data;
|
newData.files.push(action.payload.data)
|
||||||
|
}
|
||||||
|
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
||||||
activeSection: state[ action.payload.submissionId ].activeSection,
|
sections: Object.assign({}, state[ action.payload.submissionId ].sections, {
|
||||||
sections: Object.assign({}, state[ action.payload.submissionId ].sections,
|
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
||||||
Object.assign({}, {
|
enabled: true,
|
||||||
[ action.payload.sectionId ]: {
|
data: newData
|
||||||
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
})
|
||||||
files: newData
|
|
||||||
}),
|
|
||||||
isValid: state[ action.payload.submissionId ].sections[ action.payload.sectionId ].isValid,
|
|
||||||
errors: state[ action.payload.submissionId ].sections[ action.payload.sectionId ].errors
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
),
|
|
||||||
isLoading: state[ action.payload.submissionId ].isLoading,
|
|
||||||
savePending: state[ action.payload.submissionId ].savePending,
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit a bitstream.
|
* Edit a file.
|
||||||
*
|
*
|
||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* a EditFileDataAction action
|
* a EditFileDataAction action
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the edited bitstream.
|
* the new state, with the edited file.
|
||||||
*/
|
*/
|
||||||
function editFileData(state: SubmissionObjectState, action: EditFileDataAction): SubmissionObjectState {
|
function editFileData(state: SubmissionObjectState, action: EditFileDataAction): SubmissionObjectState {
|
||||||
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
||||||
@@ -739,6 +694,8 @@ function editFileData(state: SubmissionObjectState, action: EditFileDataAction):
|
|||||||
filesData.files,
|
filesData.files,
|
||||||
{ uuid: action.payload.fileId });
|
{ uuid: action.payload.fileId });
|
||||||
if (isNotNull(fileIndex)) {
|
if (isNotNull(fileIndex)) {
|
||||||
|
const newData = Array.from(filesData.files);
|
||||||
|
newData[fileIndex] = action.payload.data;
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
[ action.payload.submissionId ]: Object.assign({}, state[ action.payload.submissionId ], {
|
||||||
activeSection: state[ action.payload.submissionId ].activeSection,
|
activeSection: state[ action.payload.submissionId ].activeSection,
|
||||||
@@ -746,24 +703,10 @@ function editFileData(state: SubmissionObjectState, action: EditFileDataAction):
|
|||||||
Object.assign({}, {
|
Object.assign({}, {
|
||||||
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
||||||
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
||||||
files: Object.assign({},
|
files: newData
|
||||||
filesData.files, {
|
|
||||||
[ fileIndex ]: action.payload.data
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
|
||||||
// Object.assign({}, state[action.payload.submissionId].sections[action.payload.sectionId],{
|
|
||||||
// [ action.payload.sectionId ]: {
|
|
||||||
// data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
|
||||||
// files: Object.assign({},
|
|
||||||
// filesData.files, {
|
|
||||||
// [ fileIndex ]: action.payload.data
|
|
||||||
// })
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// )
|
|
||||||
),
|
),
|
||||||
isLoading: state[ action.payload.submissionId ].isLoading,
|
isLoading: state[ action.payload.submissionId ].isLoading,
|
||||||
savePending: state[ action.payload.submissionId ].savePending,
|
savePending: state[ action.payload.submissionId ].savePending,
|
||||||
@@ -775,44 +718,35 @@ function editFileData(state: SubmissionObjectState, action: EditFileDataAction):
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a bitstream.
|
* Delete a file.
|
||||||
*
|
*
|
||||||
* @param state
|
* @param state
|
||||||
* the current state
|
* the current state
|
||||||
* @param action
|
* @param action
|
||||||
* a DeleteUploadedFileAction action
|
* a DeleteUploadedFileAction action
|
||||||
* @return SubmissionObjectState
|
* @return SubmissionObjectState
|
||||||
* the new state, with the bitstream removed.
|
* the new state, with the file removed.
|
||||||
*/
|
*/
|
||||||
function deleteFile(state: SubmissionObjectState, action: DeleteUploadedFileAction): SubmissionObjectState {
|
function deleteFile(state: SubmissionObjectState, action: DeleteUploadedFileAction): SubmissionObjectState {
|
||||||
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
const filesData = state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data as WorkspaceitemSectionUploadObject;
|
||||||
if (hasValue(filesData.files)) {
|
if (hasValue(filesData.files)) {
|
||||||
const fileIndex = findKey(
|
const fileIndex: any = findKey(
|
||||||
filesData.files,
|
filesData.files,
|
||||||
{uuid: action.payload.fileId});
|
{uuid: action.payload.fileId});
|
||||||
if (isNotNull(fileIndex)) {
|
if (isNotNull(fileIndex)) {
|
||||||
|
const newData = Array.from(filesData.files);
|
||||||
|
newData.splice(fileIndex, 1);
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
[ action.payload.submissionId ]: Object.assign({}, state[action.payload.submissionId], {
|
[ action.payload.submissionId ]: Object.assign({}, state[action.payload.submissionId], {
|
||||||
activeSection: state[ action.payload.submissionId ].activeSection,
|
|
||||||
sections: Object.assign({}, state[action.payload.submissionId].sections,
|
sections: Object.assign({}, state[action.payload.submissionId].sections,
|
||||||
Object.assign({}, {
|
Object.assign({}, {
|
||||||
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
[ action.payload.sectionId ]: Object.assign({}, state[ action.payload.submissionId ].sections [ action.payload.sectionId ], {
|
||||||
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
data: Object.assign({}, state[ action.payload.submissionId ].sections[ action.payload.sectionId ].data, {
|
||||||
files: deleteProperty(filesData.files, fileIndex)
|
files: newData
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
// Object.assign({}, state[action.payload.submissionId].sections[action.payload.sectionId], {
|
)
|
||||||
// [ action.payload.sectionId ]: {
|
|
||||||
// data: Object.assign({}, state[action.payload.submissionId].sections[action.payload.sectionId].data, {
|
|
||||||
// files: deleteProperty(filesData.files, fileIndex)
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// )
|
|
||||||
),
|
|
||||||
isLoading: state[action.payload.submissionId].isLoading,
|
|
||||||
savePending: state[action.payload.submissionId].savePending,
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -131,7 +131,7 @@ export class FormSectionComponent extends SectionModelComponent implements OnDes
|
|||||||
message: msg + e.toString(),
|
message: msg + e.toString(),
|
||||||
path: '/sections/' + this.sectionData.id
|
path: '/sections/' + this.sectionData.id
|
||||||
};
|
};
|
||||||
this.sectionService.setSectionError(this.submissionId, this.sectionData.id, [sectionError])
|
this.sectionService.setSectionError(this.submissionId, this.sectionData.id, sectionError);
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -3,7 +3,7 @@ import { ChangeDetectorRef, Directive, Input, OnDestroy, OnInit } from '@angular
|
|||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { isEmpty, uniq } from 'lodash';
|
import { uniq } from 'lodash';
|
||||||
|
|
||||||
import { SectionsService } from './sections.service';
|
import { SectionsService } from './sections.service';
|
||||||
import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../shared/empty.util';
|
import { hasValue, isNotEmpty, isNotNull, isNotUndefined } from '../../shared/empty.util';
|
||||||
@@ -12,7 +12,7 @@ import { SubmissionState } from '../submission.reducers';
|
|||||||
import { SubmissionSectionError, SubmissionSectionObject } from '../objects/submission-objects.reducer';
|
import { SubmissionSectionError, SubmissionSectionObject } from '../objects/submission-objects.reducer';
|
||||||
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
|
import parseSectionErrorPaths, { SectionErrorPath } from '../utils/parseSectionErrorPaths';
|
||||||
import {
|
import {
|
||||||
DeleteSectionErrorsAction,
|
RemoveSectionErrorsAction,
|
||||||
SaveSubmissionSectionFormAction,
|
SaveSubmissionSectionFormAction,
|
||||||
SetActiveSectionAction
|
SetActiveSectionAction
|
||||||
} from '../objects/submission-objects.actions';
|
} from '../objects/submission-objects.actions';
|
||||||
@@ -143,12 +143,9 @@ export class SectionsDirective implements OnDestroy, OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public resetErrors() {
|
public resetErrors() {
|
||||||
this.sectionErrors
|
if (isNotEmpty(this.sectionErrors)) {
|
||||||
.forEach((errorItem) => {
|
this.store.dispatch(new RemoveSectionErrorsAction(this.submissionId, this.sectionId));
|
||||||
// because it has been deleted, remove the error from the state
|
}
|
||||||
const removeAction = new DeleteSectionErrorsAction(this.submissionId, this.sectionId, errorItem);
|
|
||||||
this.store.dispatch(removeAction);
|
|
||||||
})
|
|
||||||
this.sectionErrors = [];
|
this.sectionErrors = [];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -7,10 +7,9 @@ import { isEqual } from 'lodash';
|
|||||||
|
|
||||||
import { hasValue, isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
import { hasValue, isEmpty, isNotEmpty, isNotUndefined } from '../../shared/empty.util';
|
||||||
import {
|
import {
|
||||||
DeleteSectionErrorsAction,
|
|
||||||
DisableSectionAction,
|
DisableSectionAction,
|
||||||
EnableSectionAction,
|
EnableSectionAction,
|
||||||
InertSectionErrorsAction,
|
InertSectionErrorsAction, RemoveSectionErrorsAction,
|
||||||
UpdateSectionDataAction
|
UpdateSectionDataAction
|
||||||
} from '../objects/submission-objects.actions';
|
} from '../objects/submission-objects.actions';
|
||||||
import {
|
import {
|
||||||
@@ -37,7 +36,7 @@ export class SectionsService {
|
|||||||
|
|
||||||
public checkSectionErrors(submissionId, sectionId, formId, currentErrors, prevErrors = []) {
|
public checkSectionErrors(submissionId, sectionId, formId, currentErrors, prevErrors = []) {
|
||||||
if (isEmpty(currentErrors)) {
|
if (isEmpty(currentErrors)) {
|
||||||
this.store.dispatch(new DeleteSectionErrorsAction(submissionId, sectionId, currentErrors));
|
this.store.dispatch(new RemoveSectionErrorsAction(submissionId, sectionId));
|
||||||
this.store.dispatch(new FormClearErrorsAction(formId));
|
this.store.dispatch(new FormClearErrorsAction(formId));
|
||||||
} else if (!isEqual(currentErrors, prevErrors)) {
|
} else if (!isEqual(currentErrors, prevErrors)) {
|
||||||
const dispatchedErrors = [];
|
const dispatchedErrors = [];
|
||||||
@@ -148,7 +147,7 @@ export class SectionsService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public setSectionError(submissionId: string, sectionId: string, errors: SubmissionSectionError[]) {
|
public setSectionError(submissionId: string, sectionId: string, error: SubmissionSectionError) {
|
||||||
this.store.dispatch(new InertSectionErrorsAction(submissionId, sectionId, errors));
|
this.store.dispatch(new InertSectionErrorsAction(submissionId, sectionId, error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { ChangeDetectorRef, Component, Input, OnChanges, OnInit } from '@angular/core';
|
import { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { SectionUploadService } from '../section-upload.service';
|
import { SectionUploadService } from '../section-upload.service';
|
||||||
import { isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util';
|
import { isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util';
|
||||||
@@ -31,7 +31,7 @@ export class UploadSectionFileComponent implements OnChanges, OnInit {
|
|||||||
@Input() configMetadataForm: SubmissionFormsModel;
|
@Input() configMetadataForm: SubmissionFormsModel;
|
||||||
@Input() fileId;
|
@Input() fileId;
|
||||||
@Input() fileIndex;
|
@Input() fileIndex;
|
||||||
@Input() fileName
|
@Input() fileName;
|
||||||
@Input() sectionId;
|
@Input() sectionId;
|
||||||
@Input() submissionId;
|
@Input() submissionId;
|
||||||
|
|
||||||
@@ -138,15 +138,15 @@ export class UploadSectionFileComponent implements OnChanges, OnInit {
|
|||||||
accessConditionsToSave.push(accessConditionOpt);
|
accessConditionsToSave.push(accessConditionOpt);
|
||||||
} else {
|
} else {
|
||||||
accessConditionOpt = Object.assign({}, accessCondition);
|
accessConditionOpt = Object.assign({}, accessCondition);
|
||||||
accessConditionOpt.name = Array.isArray(accessCondition.name) ? accessCondition.name[0].value : accessCondition.name.value;
|
accessConditionOpt.name = this.retrieveValueFromField(accessCondition.name);
|
||||||
accessConditionOpt.groupUUID = Array.isArray(accessCondition.groupUUID) ? accessCondition.groupUUID[0].value : accessCondition.groupUUID.value;
|
accessConditionOpt.groupUUID = this.retrieveValueFromField(accessCondition.groupUUID);
|
||||||
if (accessCondition.startDate) {
|
if (accessCondition.startDate) {
|
||||||
const startDate = Array.isArray(accessCondition.startDate) ? accessCondition.startDate[0].value : accessCondition.startDate.value;
|
const startDate = this.retrieveValueFromField(accessCondition.startDate);
|
||||||
accessConditionOpt.startDate = dateToGMTString(startDate);
|
accessConditionOpt.startDate = dateToGMTString(startDate);
|
||||||
accessConditionOpt = deleteProperty(accessConditionOpt, 'endDate');
|
accessConditionOpt = deleteProperty(accessConditionOpt, 'endDate');
|
||||||
}
|
}
|
||||||
if (accessCondition.endDate) {
|
if (accessCondition.endDate) {
|
||||||
const endDate = Array.isArray(accessCondition.endDate) ? accessCondition.endDate[0].value : accessCondition.endDate.value;
|
const endDate = this.retrieveValueFromField(accessCondition.endDate);
|
||||||
accessConditionOpt.endDate = dateToGMTString(endDate);
|
accessConditionOpt.endDate = dateToGMTString(endDate);
|
||||||
accessConditionOpt = deleteProperty(accessConditionOpt, 'startDate');
|
accessConditionOpt = deleteProperty(accessConditionOpt, 'startDate');
|
||||||
}
|
}
|
||||||
@@ -174,8 +174,14 @@ export class UploadSectionFileComponent implements OnChanges, OnInit {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private retrieveValueFromField(field) {
|
||||||
|
const temp = Array.isArray(field) ? field[0] : field;
|
||||||
|
return (temp) ? temp.value : undefined;
|
||||||
|
}
|
||||||
|
|
||||||
public switchMode() {
|
public switchMode() {
|
||||||
this.readMode = !this.readMode;
|
this.readMode = !this.readMode;
|
||||||
this.cdr.detectChanges();
|
this.cdr.detectChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -149,17 +149,17 @@ export class UploadSectionComponent extends SectionModelComponent implements OnI
|
|||||||
.getUploadedFileList(this.submissionId, this.sectionData.id)
|
.getUploadedFileList(this.submissionId, this.sectionData.id)
|
||||||
.filter((bitstreamList) => isNotUndefined(bitstreamList))
|
.filter((bitstreamList) => isNotUndefined(bitstreamList))
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.subscribe((fileList) => {
|
.subscribe((fileList: any[]) => {
|
||||||
let sectionStatus = false;
|
let sectionStatus = false;
|
||||||
this.fileList = [];
|
this.fileList = [];
|
||||||
this.fileIndexes = [];
|
this.fileIndexes = [];
|
||||||
this.fileNames = [];
|
this.fileNames = [];
|
||||||
if (isNotUndefined(fileList) && Object.keys(fileList).length > 0) {
|
this.changeDetectorRef.detectChanges();
|
||||||
Object.keys(fileList)
|
if (isNotUndefined(fileList) && fileList.length > 0) {
|
||||||
.forEach((key) => {
|
fileList.forEach((file, index) => {
|
||||||
this.fileList.push(fileList[key]);
|
this.fileList.push(file);
|
||||||
this.fileIndexes.push(fileList[key].uuid);
|
this.fileIndexes.push(file.uuid);
|
||||||
const fileName = fileList[key].metadata['dc.title'][0].display || fileList[key].uuid;
|
const fileName = file.metadata['dc.title'][0].display || file.uuid;
|
||||||
this.fileNames.push(fileName);
|
this.fileNames.push(fileName);
|
||||||
});
|
});
|
||||||
sectionStatus = true;
|
sectionStatus = true;
|
||||||
|
Reference in New Issue
Block a user