Fix critical issue with dataset saving

This commit is contained in:
George Kalampokis 2022-03-17 17:07:18 +02:00
parent 65b4e58aad
commit 3c00d47407
2 changed files with 27 additions and 23 deletions

View File

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

View File

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