Fix critical issue with dataset saving

saml2
George Kalampokis 2 years ago
parent 65b4e58aad
commit 3c00d47407

@ -12,7 +12,7 @@ export interface Field {
description: string;
numbering: string;
extendedDescription: string;
additionalInformation:string;
additionalInformation: string;
viewStyle: ViewStyle;
defaultVisibility: boolean;
page: number;
@ -22,4 +22,5 @@ export interface Field {
validations: Array<ValidationType>;
validationRequired;
validationURL;
ordinal: number;
}

@ -1,18 +1,18 @@
import {FormBuilder, FormControl, FormGroup, ValidatorFn, Validators} from "@angular/forms";
import {Guid} from '@common/types/guid';
import {ValidationType, ValidatorURL} from "../../../core/common/enum/validation-type";
import {BaseFormModel} from "../../../core/model/base-form-model";
import {CompositeField} from "../../../core/model/dataset-profile-definition/composite-field";
import {DatasetProfileDefinitionModel} from "../../../core/model/dataset-profile-definition/dataset-profile-definition";
import {DefaultValue} from "../../../core/model/dataset-profile-definition/default-value";
import {Field} from "../../../core/model/dataset-profile-definition/field";
import {Multiplicity} from "../../../core/model/dataset-profile-definition/multiplicity";
import {Page} from "../../../core/model/dataset-profile-definition/page";
import {Rule} from "../../../core/model/dataset-profile-definition/rule";
import {Section} from "../../../core/model/dataset-profile-definition/section";
import {ViewStyle} from "../../../core/model/dataset-profile-definition/view-style";
import {BackendErrorValidator} from '@common/forms/validation/custom-validator';
import {ValidationErrorModel} from '@common/forms/validation/error-model/validation-error-model';
import { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from "@angular/forms";
import { Guid } from '@common/types/guid';
import { ValidationType, ValidatorURL } from "../../../core/common/enum/validation-type";
import { BaseFormModel } from "../../../core/model/base-form-model";
import { CompositeField } from "../../../core/model/dataset-profile-definition/composite-field";
import { DatasetProfileDefinitionModel } from "../../../core/model/dataset-profile-definition/dataset-profile-definition";
import { DefaultValue } from "../../../core/model/dataset-profile-definition/default-value";
import { Field } from "../../../core/model/dataset-profile-definition/field";
import { Multiplicity } from "../../../core/model/dataset-profile-definition/multiplicity";
import { Page } from "../../../core/model/dataset-profile-definition/page";
import { Rule } from "../../../core/model/dataset-profile-definition/rule";
import { Section } from "../../../core/model/dataset-profile-definition/section";
import { ViewStyle } from "../../../core/model/dataset-profile-definition/view-style";
import { BackendErrorValidator } from '@common/forms/validation/custom-validator';
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
export class DatasetDescriptionFormEditorModel extends BaseFormModel {
@ -64,7 +64,7 @@ export class DatasetDescriptionPageEditorModel extends BaseFormModel {
});
formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray));
formGroup.addControl('title', new FormControl({ value: this.title, disabled: true }));
formGroup.addControl('ordinal', new FormControl({value:this.ordinal, disabled:true}));
formGroup.addControl('ordinal', new FormControl({ value: this.ordinal, disabled: true }));
return formGroup;
}
}
@ -194,17 +194,17 @@ export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel {
// return newItem;
// }
cloneForMultiplicity(item: CompositeField, ordinal: number, idMappings:{old:string, new:string}[] = []): DatasetDescriptionCompositeFieldEditorModel {
cloneForMultiplicity(item: CompositeField, ordinal: number, idMappings: { old: string, new: string }[] = []): DatasetDescriptionCompositeFieldEditorModel {
const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel();
newItem.id = 'multiple_' + item.id + '_' + Guid.create() + '_' + ordinal;
idMappings.push({old: item.id, new: newItem.id });
idMappings.push({ old: item.id, new: newItem.id });
item.fields.forEach((field, index) => {
const clonedItem = new DatasetDescriptionFieldEditorModel().cloneForMultiplicity(field, newItem.id)
newItem.fields.push(clonedItem);
idMappings.push({old: field.id, new: clonedItem.id});
idMappings.push({ old: field.id, new: clonedItem.id });
});
newItem.ordinal = ordinal;
return newItem;
@ -230,9 +230,11 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
public validations: Array<ValidationType>;
public validationRequired = false;
public validationURL = false;
public ordinal: number;
fromModel(item: Field): DatasetDescriptionFieldEditorModel {
this.id = item.id;
this.ordinal = item.ordinal;
this.title = item.title;
this.numbering = item.numbering;
this.description = item.description;
@ -256,16 +258,16 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
this.validations.forEach(validation => {
if (validation === ValidationType.Required) {
this.validationRequired = true;
} else if(validation === ValidationType.URL) {
} else if (validation === ValidationType.URL) {
this.validationURL = true;
}
});
}
let validators: any[] = [];
if(this.validationRequired) {
if (this.validationRequired) {
validators.push(Validators.required)
}
if(this.validationURL) {
if (this.validationURL) {
validators.push(ValidatorURL.validator);
}
const formGroup = this.formBuilder.group({
@ -280,6 +282,7 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
additionalInformation: [{ value: this.additionalInformation, disabled: true }],
title: [{ value: this.title, disabled: true }],
defaultValue: [{ value: this.defaultValue, disabled: true }],
ordinal: [{ value: this.ordinal, disabled: true }]
});
const multiplicityItemsFormArray = new Array<FormGroup>();

Loading…
Cancel
Save