diff --git a/src/app/core/submission/models/workspaceitem-sections.model.ts b/src/app/core/submission/models/workspaceitem-sections.model.ts index 01c1c79eb9..e954c880c4 100644 --- a/src/app/core/submission/models/workspaceitem-sections.model.ts +++ b/src/app/core/submission/models/workspaceitem-sections.model.ts @@ -1,57 +1,13 @@ import { WorkspaceitemSectionFormObject } from './workspaceitem-section-form.model'; import { WorkspaceitemSectionLicenseObject } from './workspaceitem-section-license.model'; import { WorkspaceitemSectionUploadObject } from './workspaceitem-section-upload.model'; -import { isNotNull } from '../../../shared/empty.util'; import { WorkspaceitemSectionRecycleObject } from './workspaceitem-section-recycle.model'; import { WorkspaceitemSectionDetectDuplicateObject } from './workspaceitem-section-deduplication.model'; -import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; export class WorkspaceitemSectionsObject { [name: string]: WorkspaceitemSectionDataType; } -export function isServerFormValue(obj: any): boolean { - return (typeof obj === 'object' - && obj.hasOwnProperty('value') - && obj.hasOwnProperty('language') - && obj.hasOwnProperty('authority') - && obj.hasOwnProperty('confidence') - && obj.hasOwnProperty('place')) -} - -export function normalizeSectionData(obj: any) { - let result: any = obj; - if (isNotNull(obj)) { - // If is an Instance of FormFieldMetadataValueObject normalize it - if (typeof obj === 'object' && isServerFormValue(obj)) { - // If authority property is set normalize as a FormFieldMetadataValueObject object - /* NOTE: Data received from server could have authority property equal to null, but into form - field's model is required a FormFieldMetadataValueObject object as field value, so instantiate it */ - result = new FormFieldMetadataValueObject( - obj.value, - obj.language, - obj.authority, - (obj.display || obj.value), - obj.place, - obj.confidence, - obj.otherInformation - ); - } else if (Array.isArray(obj)) { - result = []; - obj.forEach((item, index) => { - result[index] = normalizeSectionData(item); - }); - } else if (typeof obj === 'object') { - result = Object.create({}); - Object.keys(obj) - .forEach((key) => { - result[key] = normalizeSectionData(obj[key]); - }); - } - } - return result; -} - export type WorkspaceitemSectionDataType = WorkspaceitemSectionUploadObject | WorkspaceitemSectionFormObject diff --git a/src/app/core/submission/submission-response-parsing.service.ts b/src/app/core/submission/submission-response-parsing.service.ts index b7517a8248..c6e3105122 100644 --- a/src/app/core/submission/submission-response-parsing.service.ts +++ b/src/app/core/submission/submission-response-parsing.service.ts @@ -14,10 +14,55 @@ import { NormalizedSubmissionObjectFactory } from './normalized-submission-objec import { NormalizedObject } from '../cache/models/normalized-object.model'; import { SubmissionResourceType } from './submission-resource-type'; import { NormalizedWorkspaceItem } from './models/normalized-workspaceitem.model'; -import { normalizeSectionData } from './models/workspaceitem-sections.model'; import { NormalizedWorkflowItem } from './models/normalized-workflowitem.model'; import { NormalizedEditItem } from './models/normalized-edititem.model'; +import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model'; +export function isServerFormValue(obj: any): boolean { + return (typeof obj === 'object' + && obj.hasOwnProperty('value') + && obj.hasOwnProperty('language') + && obj.hasOwnProperty('authority') + && obj.hasOwnProperty('confidence') + && obj.hasOwnProperty('place')) +} + +export function normalizeSectionData(obj: any) { + let result: any = obj; + if (isNotNull(obj)) { + // If is an Instance of FormFieldMetadataValueObject normalize it + if (typeof obj === 'object' && isServerFormValue(obj)) { + // If authority property is set normalize as a FormFieldMetadataValueObject object + /* NOTE: Data received from server could have authority property equal to null, but into form + field's model is required a FormFieldMetadataValueObject object as field value, so instantiate it */ + result = new FormFieldMetadataValueObject( + obj.value, + obj.language, + obj.authority, + (obj.display || obj.value), + obj.place, + obj.confidence, + obj.otherInformation + ); + } else if (Array.isArray(obj)) { + result = []; + obj.forEach((item, index) => { + result[index] = normalizeSectionData(item); + }); + } else if (typeof obj === 'object') { + result = Object.create({}); + Object.keys(obj) + .forEach((key) => { + result[key] = normalizeSectionData(obj[key]); + }); + } + } + return result; +} + +/** + * Provides methods to parse response for a submission request. + */ @Injectable() export class SubmissionResponseParsingService extends BaseResponseParsingService implements ResponseParsingService { diff --git a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts index d1a5fb0659..055a58f852 100644 --- a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts +++ b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts @@ -7,7 +7,7 @@ import { first } from 'rxjs/operators'; import { SectionsService } from '../../sections/sections.service'; import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util'; import { Workspaceitem } from '../../../core/submission/models/workspaceitem.model'; -import { normalizeSectionData } from '../../../core/submission/models/workspaceitem-sections.model'; +import { normalizeSectionData } from '../../../core/submission/submission-response-parsing.service'; import { SubmissionService } from '../../submission.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { UploaderOptions } from '../../../shared/uploader/uploader-options.model';