From 4d13fc5443078cd9a6742063fa7f847d11b0895f Mon Sep 17 00:00:00 2001 From: mchouliara Date: Wed, 4 Sep 2024 12:48:12 +0300 Subject: [PATCH] fix plan blueprint disabled drag handles, add strictly typed forms to description template editor(wip) --- ...n-template-editor-field-set.component.html | 42 +++++++- ...ion-template-editor-field-set.component.ts | 2 - ...description-template-editor.component.html | 4 +- .../description-template-editor.component.ts | 14 +-- .../description-template-editor.model.ts | 101 +++++++++++++++++- .../plan-blueprint-editor.component.html | 16 +-- 6 files changed, 152 insertions(+), 27 deletions(-) diff --git a/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.html b/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.html index 1c0042612..b5e11e74a 100644 --- a/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.html +++ b/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.html @@ -260,11 +260,22 @@
  • - {{'DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.FIELDSET.COMMENT-FIELD' | translate}} + + {{'DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.FIELDSET.COMMENT-FIELD' | translate}} + {{form.get('hasCommentField').getError('backendError').message}}
  • - + {{'DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.FIELDSET.MULTIPLICITY' | translate}}
  • @@ -272,9 +283,30 @@ more_vert - {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.DESCRIPTION' | translate}} - {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.EXTENDED-DESCRIPTION' | translate}} - {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.ADDITIONAL-INFORMATION' | translate}} + + {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.DESCRIPTION' | translate}} + + + {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.EXTENDED-DESCRIPTION' | translate}} + + + {{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.FORM.FIELD-SET.FIELDS.ADDITIONAL-INFORMATION' | translate}} + diff --git a/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.ts b/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.ts index 93894f918..335871ea7 100644 --- a/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.ts +++ b/frontend/src/app/ui/admin/description-template/editor/components/field-set/description-template-editor-field-set.component.ts @@ -22,7 +22,6 @@ import { DescriptionTemplateFieldSetPersist, DescriptionTemplateReferenceTypeFie import { DescriptionEditorModel } from '@app/ui/description/editor/description-editor.model'; import { Description } from '@app/core/model/description/description'; import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; -import { ReferenceTypeService } from '@app/core/services/reference-type/reference-type.service'; import { ReferenceType } from '@app/core/model/reference-type/reference-type'; @Component({ @@ -66,7 +65,6 @@ export class DescriptionTemplateEditorFieldSetComponent extends BaseComponent im public descriptionTemplateService: DescriptionTemplateService, private configurationService: ConfigurationService, public visibilityRulesService: VisibilityRulesService, - private referenceTypeService: ReferenceTypeService, ) { super(); } diff --git a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.html b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.html index 6bb539f07..42e06808d 100644 --- a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.html +++ b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.html @@ -136,7 +136,7 @@ - +
    @@ -268,7 +268,7 @@ chevron_left {{'DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.PREVIOUS' | translate}} - diff --git a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts index c8383a333..cd2cec5a1 100644 --- a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts +++ b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts @@ -38,7 +38,7 @@ import { Guid } from '@common/types/guid'; import { TranslateService } from '@ngx-translate/core'; import { map, takeUntil } from 'rxjs/operators'; import { GENERAL_ANIMATIONS, STEPPER_ANIMATIONS } from './animations/animations'; -import { DescriptionTemplateEditorModel, DescriptionTemplateFieldEditorModel, DescriptionTemplateFieldSetEditorModel, DescriptionTemplatePageEditorModel, DescriptionTemplateSectionEditorModel, UserDescriptionTemplateEditorModel } from './description-template-editor.model'; +import { DescriptionTemplateEditorModel, DescriptionTemplateFieldEditorModel, DescriptionTemplateFieldSetEditorModel, DescriptionTemplateForm, DescriptionTemplatePageEditorModel, DescriptionTemplateSectionEditorModel, UserDescriptionTemplateEditorModel } from './description-template-editor.model'; import { DescriptionTemplateEditorResolver } from './description-template-editor.resolver'; import { DescriptionTemplateEditorService } from './description-template-editor.service'; import { NewEntryType, ToCEntry, ToCEntryType } from './table-of-contents/description-template-table-of-contents-entry'; @@ -59,7 +59,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor = null; item: DescriptionTemplate; showInactiveDetails = false; finalized: DescriptionTemplateStatus.Finalized; @@ -260,7 +260,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor void): void { if (!this.isNewVersion) { - const formData = this.formService.getValue(this.formGroup.value) as DescriptionTemplatePersist; + const formData = JSON.parse(JSON.stringify(this.formGroup.value)) as DescriptionTemplatePersist; formData.code = this.formGroup.get('code').getRawValue(); this.descriptionTemplateService.persist(formData) @@ -272,7 +272,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor { if (result) { - this.descriptionTemplateService.delete(value.id).pipe(takeUntil(this._destroyed)) + this.descriptionTemplateService.delete(id).pipe(takeUntil(this._destroyed)) .subscribe( complete => this.onCallbackDeleteSuccess(), error => this.onCallbackError(error) diff --git a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts index aa2a4b8b2..63c9da55c 100644 --- a/frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts +++ b/frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts @@ -1,4 +1,4 @@ -import { FormArray, FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; +import { FormArray, FormControl, FormGroup, UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; import { DescriptionTemplateFieldDataExternalDatasetType } from "@app/core/common/enum/description-template-field-data-external-dataset-type"; import { DescriptionTemplateFieldType } from "@app/core/common/enum/description-template-field-type"; import { DescriptionTemplateFieldValidationType } from "@app/core/common/enum/description-template-field-validation-type"; @@ -14,6 +14,20 @@ import { Validation, ValidationContext } from "@common/forms/validation/validati import { Guid } from "@common/types/guid"; import { EditorCustomValidators } from "./custom-validators/editor-custom-validators"; +export interface DescriptionTemplateForm { + id: FormControl; + hash: FormControl; + label: FormControl; + code: FormControl; + description: FormControl; + language: FormControl; + type: FormControl; + status: FormControl; + definition: FormGroup; + users: FormArray> + permissions: FormControl; +} + export class DescriptionTemplateEditorModel extends BaseEditorModel implements DescriptionTemplatePersist { label: string; code: string; @@ -45,7 +59,7 @@ export class DescriptionTemplateEditorModel extends BaseEditorModel implements D return this; } - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { + buildForm(context: ValidationContext = null, disabled: boolean = false): FormGroup { if (context == null) { context = this.createValidationContext(); } return this.formBuilder.group({ @@ -114,6 +128,10 @@ export class DescriptionTemplateEditorModel extends BaseEditorModel implements D } +export interface UserDescriptionTemplateForm { + userId: FormControl; + role: FormControl; +} export class UserDescriptionTemplateEditorModel implements UserDescriptionTemplatePersist { userId?: Guid; role?: UserDescriptionTemplateRole; @@ -136,7 +154,7 @@ export class UserDescriptionTemplateEditorModel implements UserDescriptionTempla context?: ValidationContext, disabled?: boolean, rootPath?: string - }): UntypedFormGroup { + }): FormGroup { let { context = null, disabled = false, rootPath } = params ?? {} if (context == null) { context = UserDescriptionTemplateEditorModel.createValidationContext({ @@ -187,6 +205,11 @@ export class UserDescriptionTemplateEditorModel implements UserDescriptionTempla } + +export interface DescriptionTemplateDefinitionForm { + pages: FormArray>; +} + export class DescriptionTemplateDefinitionEditorModel implements DescriptionTemplateDefinitionPersist { pages: DescriptionTemplatePageEditorModel[] = []; @@ -259,6 +282,13 @@ export class DescriptionTemplateDefinitionEditorModel implements DescriptionTemp } +export interface DescriptionTemplatePageForm{ + id: FormControl; + ordinal: FormControl; + title: FormControl; + sections: FormArray>; +} + export class DescriptionTemplatePageEditorModel implements DescriptionTemplatePagePersist { id: string; ordinal: number; @@ -364,6 +394,14 @@ export class DescriptionTemplatePageEditorModel implements DescriptionTemplatePa } +export interface DescriptionTemplateSectionForm { + id: FormControl; + ordinal: FormControl; + title: FormControl; + description: FormControl; + sections: FormArray>; + fieldSets: FormArray>; +} export class DescriptionTemplateSectionEditorModel implements DescriptionTemplateSectionPersist { id: string; ordinal: number; @@ -487,6 +525,18 @@ export class DescriptionTemplateSectionEditorModel implements DescriptionTemplat } +export interface DescriptionTemplateFieldSetForm { + id: FormControl; + ordinal: FormControl; + title: FormControl; + description: FormControl; + extendedDescription: FormControl; + additionalInformation: FormControl; + multiplicity: FormGroup; + hasMultiplicity: FormControl; + hasCommentField: FormControl; + fields: FormArray>; +} export class DescriptionTemplateFieldSetEditorModel implements DescriptionTemplateFieldSetPersist { id: string; ordinal: number; @@ -615,6 +665,12 @@ export class DescriptionTemplateFieldSetEditorModel implements DescriptionTempla } } +export interface DescriptionTemplateMultiplicityForm { + min: FormControl; + max: FormControl; + placeholder: FormControl; + tableView: FormControl; +} export class DescriptionTemplateMultiplicityEditorModel implements DescriptionTemplateMultiplicityPersist { min: number; max: number; @@ -700,6 +756,17 @@ export class DescriptionTemplateMultiplicityEditorModel implements DescriptionTe // Field Editor Model // // + +export interface DescriptionTemplateFieldForm { + id: FormControl; + ordinal: FormControl; + semantics: FormControl; + defaultValue: FormGroup; + visibilityRules: FormArray>; + validations: FormControl; + includeInExport: FormControl; + data: FormGroup; +} export class DescriptionTemplateFieldEditorModel implements DescriptionTemplateFieldPersist { id: string; ordinal: number; @@ -892,6 +959,12 @@ export class DescriptionTemplateFieldEditorModel implements DescriptionTemplateF } } +export interface DescriptionTemplateDefaultValueForm { + target: FormControl; + textValue: FormControl; + dateValue: FormControl; + booleanValue: FormControl; +} export class DescriptionTemplateDefaultValueEditorModel implements DescriptionTemplateDefaultValuePersist { target: string; textValue: string; @@ -969,6 +1042,13 @@ export class DescriptionTemplateDefaultValueEditorModel implements DescriptionTe } } +export interface DescriptionTemplateRuleForm { + target: FormControl; + textValue: FormControl; + dateValue: FormControl; + booleanValue: FormControl; +} + export class DescriptionTemplateRuleEditorModel implements DescriptionTemplateRulePersist { target: string; textValue: string; @@ -1049,6 +1129,10 @@ export class DescriptionTemplateRuleEditorModel implements DescriptionTemplateRu } } +export interface DescriptionTemplateLabelDataForm { + label: FormControl; + fieldType: FormControl; +} export class DescriptionTemplateLabelDataEditorModel implements DescriptionTemplateLabelDataPersist { label: string; fieldType: DescriptionTemplateFieldType; @@ -1470,6 +1554,7 @@ export class DescriptionTemplateRadioBoxOptionEditorModel implements Description // Select Field // // + export class DescriptionTemplateSelectDataEditorModel extends DescriptionTemplateLabelDataEditorModel implements DescriptionTemplateSelectDataPersist { options: DescriptionTemplateSelectOptionEditorModel[] = []; multipleSelect: boolean = false; @@ -1625,6 +1710,10 @@ export class DescriptionTemplateSelectOptionEditorModel implements DescriptionTe } +export interface DescriptionTemplateUploadDataForm { + types: FormArray; + maxFileSizeInMB: FormControl; +} // // // Upload Field @@ -1714,6 +1803,7 @@ export class DescriptionTemplateUploadDataEditorModel extends DescriptionTemplat } } + export class DescriptionTemplateUploadOptionEditorModel implements DescriptionTemplateUploadOptionPersist { label: string; value: string; @@ -1784,3 +1874,8 @@ export class DescriptionTemplateUploadOptionEditorModel implements DescriptionTe }) } } + +export interface LabelValueForm extends FormGroup<{ + label: FormControl; + value: FormControl; +}>{} \ No newline at end of file diff --git a/frontend/src/app/ui/admin/plan-blueprint/editor/plan-blueprint-editor.component.html b/frontend/src/app/ui/admin/plan-blueprint/editor/plan-blueprint-editor.component.html index 573ff05cd..19f4c7b7c 100644 --- a/frontend/src/app/ui/admin/plan-blueprint/editor/plan-blueprint-editor.component.html +++ b/frontend/src/app/ui/admin/plan-blueprint/editor/plan-blueprint-editor.component.html @@ -42,7 +42,7 @@ {{'PLAN-BLUEPRINT-EDITOR.SYSTEM-FIELDS-REQUIRED' | translate}}
    -
    +
    @@ -50,7 +50,7 @@
    {{'PLAN-BLUEPRINT-EDITOR.FIELDS.SECTION-PREFIX' | translate}} {{sectionIndex + 1}}
    -
    drag_indicator
    +
    drag_indicator
    -
    +
    {{fieldIndex + 1}} - drag_indicator + drag_indicator
    {{fieldIndex + 1}} - drag_indicator + drag_indicator
    @@ -238,13 +238,13 @@
    -
    +
    {{descriptionTemplateIndex + 1}} - drag_indicator + drag_indicator
    {{descriptionTemplateIndex + 1}} - drag_indicator + drag_indicator