From 0da7fd84416a2eae715ef6bf798c571d870efce9 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Tue, 16 Apr 2019 13:49:09 +0300 Subject: [PATCH] Adds basic edit on finalized Dataset profiles. (Ticket #72) --- .../admin/default-value-editor-model.ts | 7 +++--- .../auto-complete-field-data-editor-model.ts | 14 +++++------ ...oolean-decision-field-data-editor-model.ts | 4 ++-- .../check-box-field-data-editor-model.ts | 4 ++-- .../date-picker-data-editor-models.ts | 8 +++---- .../field-data/field-data-editor-model.ts | 3 +-- .../field-data-option-editor-model.ts | 6 ++--- .../free-text-field-data-editor-model.ts | 4 ++-- .../radio-box-field-data-editor-model.ts | 6 ++--- .../text-area-field-data-editor-model.ts | 4 ++-- .../word-list-field-data-editor-model.ts | 8 +++---- .../admin/field-editor-model.ts | 22 ++++++++--------- .../admin/field-set-editor-model.ts | 24 +++++++++---------- .../admin/multiplicity-editor-model.ts | 6 ++--- .../admin/page-editor-model.ts | 8 +++---- .../admin/rule-editor-model.ts | 12 +++++----- .../admin/section-editor-model.ts | 22 ++++++++--------- .../admin/view-style-editor-model.ts | 7 +++--- .../admin/visibility-editor-model.ts | 6 ++--- .../editor/dataset-profile-editor-model.ts | 15 ++++++------ .../dataset-profile-editor.component.ts | 12 +++++----- .../src/assets/resources/skipDisable.json | 13 ++++++++++ 22 files changed, 112 insertions(+), 103 deletions(-) create mode 100644 dmp-frontend/src/assets/resources/skipDisable.json diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/default-value-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/default-value-editor-model.ts index 99cd6c754..a2ea403ce 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/default-value-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/default-value-editor-model.ts @@ -12,11 +12,10 @@ export class DefaultValueEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - type: [this.type], - value: [this.value] - + type: [{ value: this.type, disabled: (disabled && !skipDisable.includes('DefaultValueEditorModel.type')) }], + value: [{ value: this.value, disabled: (disabled && !skipDisable.includes('DefaultValueEditorModel.value')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts index 3f31b849a..5f4257946 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts @@ -13,15 +13,15 @@ export class AutoCompleteFieldDataEditorModel extends FieldDataEditorModel = []): FormGroup { const formGroup = this.formBuilder.group({ - label: [this.label], - type: [this.type], - url: [this.url], - optionsRoot: [this.optionsRoot], - multiAutoComplete: [this.multiAutoComplete] + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('AutoCompleteFieldDataEditorModel.label')) }], + type: [{ value: this.type, disabled: (disabled && !skipDisable.includes('AutoCompleteFieldDataEditorModel.type')) }], + url: [{ value: this.url, disabled: (disabled && !skipDisable.includes('AutoCompleteFieldDataEditorModel.url')) }], + optionsRoot: [{ value: this.optionsRoot, disabled: (disabled && !skipDisable.includes('AutoCompleteFieldDataEditorModel.optionsRoot')) }], + multiAutoComplete: [{ value: this.multiAutoComplete, disabled: (disabled && !skipDisable.includes('AutoCompleteFieldDataEditorModel.multiAutoComplete')) }] }); - formGroup.addControl('autoCompleteOptions', this.autoCompleteOptions.buildForm()); + formGroup.addControl('autoCompleteOptions', this.autoCompleteOptions.buildForm(disabled, skipDisable)); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/boolean-decision-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/boolean-decision-field-data-editor-model.ts index caf0b314f..4cb82ad5f 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/boolean-decision-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/boolean-decision-field-data-editor-model.ts @@ -4,9 +4,9 @@ import { FieldDataEditorModel } from './field-data-editor-model'; export class BooleanDecisionFieldDataEditorModel extends FieldDataEditorModel { - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: this.label + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('BooleanDecisionFieldDataEditorModel.label')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/check-box-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/check-box-field-data-editor-model.ts index b31818399..009a1a6b3 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/check-box-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/check-box-field-data-editor-model.ts @@ -4,9 +4,9 @@ import { FieldDataEditorModel } from './field-data-editor-model'; export class CheckBoxFieldDataEditorModel extends FieldDataEditorModel { - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: this.label + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('CheckBoxFieldDataEditorModel.label')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts index 6d65a7bef..1d913a6e4 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts @@ -3,11 +3,11 @@ import { FieldDataEditorModel } from './field-data-editor-model'; import { DatePickerFieldData } from '../../../../../core/model/dataset-profile-definition/field-data/field-data'; export class DatePickerDataEditorModel extends FieldDataEditorModel { - public label: string; - - buildForm(): FormGroup { + public label: string; + + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: [this.label] + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('DatePickerDataEditorModel.label')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-editor-model.ts index 71b2c620c..8eda12048 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-editor-model.ts @@ -5,12 +5,11 @@ export abstract class FieldDataEditorModel extends BaseFormModel { public label: string; - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { throw new Error('Build Form Is not not correctly overriden'); } fromJSONObject(item: any): T { throw new Error('From Json Object is not correctly overriden'); } - } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-option-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-option-editor-model.ts index 3a97ccfa9..e9915d130 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-option-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/field-data-option-editor-model.ts @@ -6,10 +6,10 @@ export class FieldDataOptionEditorModel extends FieldDataEditorModel = []): FormGroup { return new FormBuilder().group({ - label: [this.label], - value: [this.value] + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('FieldDataOptionEditorModel.label')) }], + value: [{ value: this.value, disabled: (disabled && !skipDisable.includes('FieldDataOptionEditorModel.value')) }] }); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/free-text-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/free-text-field-data-editor-model.ts index 884db0f1b..5a2733543 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/free-text-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/free-text-field-data-editor-model.ts @@ -4,9 +4,9 @@ import { FieldDataEditorModel } from './field-data-editor-model'; export class FreeTextFieldDataEditorModel extends FieldDataEditorModel { - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: this.label + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('FreeTextFieldDataEditorModel.label')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/radio-box-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/radio-box-field-data-editor-model.ts index a9dfde1f5..22752fb05 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/radio-box-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/radio-box-field-data-editor-model.ts @@ -7,14 +7,14 @@ export class RadioBoxFieldDataEditorModel extends FieldDataEditorModel = []; - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: [this.label] + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('RadioBoxFieldDataEditorModel.label')) }] }); const optionsFormArray = new Array(); if (this.options) { this.options.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); optionsFormArray.push(form); }); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/text-area-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/text-area-field-data-editor-model.ts index 2a746176c..6d9fefdc2 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/text-area-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/text-area-field-data-editor-model.ts @@ -4,9 +4,9 @@ import { FieldDataEditorModel } from './field-data-editor-model'; export class TextAreaFieldDataEditorModel extends FieldDataEditorModel { - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - label: this.label + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('TextAreaFieldDataEditorModel.label')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts index f0998ef72..7308ee1af 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts @@ -8,15 +8,15 @@ export class WordListFieldDataEditorModel extends FieldDataEditorModel; - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - type: [this.type], - label: [this.label] + type: [{ value: this.type, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.type')) }], + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('WordListFieldDataEditorModel.label')) }] }); const optionsFormArray = new Array(); if (this.options) { this.options.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); optionsFormArray.push(form); }); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts index d539b5069..06e4e5227 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts @@ -53,22 +53,20 @@ export class FieldEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - id:[this.id,[Validators.required,Validators.pattern('^[^<_>]+$')]], + id: [{ value: this.id, disabled: (disabled && !skipDisable.includes('FieldEditorModel.id')) }, [Validators.required, Validators.pattern('^[^<_>]+$')]], // title: [this.title], - page: [this.page], - ordinal: [this.ordinal] + page: [{ value: this.page, disabled: (disabled && !skipDisable.includes('FieldEditorModel.page')) }], + ordinal: [{ value: this.ordinal, disabled: (disabled && !skipDisable.includes('FieldEditorModel.ordinal')) }], + validations: [{ value: this.validations, disabled: (disabled && !skipDisable.includes('FieldEditorModel.validations')) }] }); - // formGroup.addControl("multiplicity", this.multiplicity.buildForm()); - formGroup.addControl('validations', new FormControl(this.validations)); - formGroup.addControl('defaultValue', this.defaultValue.buildForm()); - formGroup.addControl('viewStyle', this.viewStyle.buildForm()); - formGroup.addControl('visible', this.visible.buildForm()); - //formGroup.addControl("data",this.data? this.data.buildForm():this.formBuilder.group({})); - if (this.data) { formGroup.addControl('data', this.data.buildForm()); } - else { formGroup.addControl('data', new WordListFieldDataEditorModel().buildForm()); } + formGroup.addControl('defaultValue', this.defaultValue.buildForm(disabled, skipDisable)); + formGroup.addControl('viewStyle', this.viewStyle.buildForm(disabled, skipDisable)); + formGroup.addControl('visible', this.visible.buildForm(disabled, skipDisable)); + if (this.data) { formGroup.addControl('data', this.data.buildForm(disabled, skipDisable)); } + else { formGroup.addControl('data', new WordListFieldDataEditorModel().buildForm(disabled, skipDisable)); } return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-set-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-set-editor-model.ts index 5f3791e8b..37e9f1fe4 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-set-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-set-editor-model.ts @@ -14,7 +14,7 @@ export class FieldSetEditorModel extends BaseFormModel { public title: string; public description: string; public extendedDescription: string; - public additionalInformation:string; + public additionalInformation: string; public hasCommentField: boolean; fromModel(item: FieldSet): FieldSetEditorModel { @@ -26,28 +26,28 @@ export class FieldSetEditorModel extends BaseFormModel { this.title = item.title; this.description = item.description; this.extendedDescription = item.extendedDescription; - this.additionalInformation=item.additionalInformation; + this.additionalInformation = item.additionalInformation; this.hasCommentField = item.hasCommentField; return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - id:[this.id,[Validators.required,Validators.pattern('^[^<_>]+$')]], - ordinal: [this.ordinal], - title: [this.title], - description: [this.description], - extendedDescription: [this.extendedDescription], - additionalInformation:[this.additionalInformation], - hasCommentField: [this.hasCommentField] + id: [{ value: this.id, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.id')) }, [Validators.required, Validators.pattern('^[^<_>]+$')]], + ordinal: [{ value: this.ordinal, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.ordinal')) }], + title: [{ value: this.title, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.title')) }], + description: [{ value: this.description, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.description')) }], + extendedDescription: [{ value: this.extendedDescription, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.extendedDescription')) }], + additionalInformation: [{ value: this.additionalInformation, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.additionalInformation')) }], + hasCommentField: [{ value: this.hasCommentField, disabled: (disabled && !skipDisable.includes('FieldSetEditorModel.hasCommentField')) }] }); const fieldsFormArray = new Array(); this.fields.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); fieldsFormArray.push(form); }); formGroup.addControl('fields', this.formBuilder.array(fieldsFormArray)); - formGroup.addControl('multiplicity', this.multiplicity.buildForm()); + formGroup.addControl('multiplicity', this.multiplicity.buildForm(disabled, skipDisable)); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/multiplicity-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/multiplicity-editor-model.ts index fbbd0207d..04b48b71c 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/multiplicity-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/multiplicity-editor-model.ts @@ -12,10 +12,10 @@ export class MultiplicityEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - min: [this.min], - max: [this.max] + min: [{ value: this.min, disabled: (disabled && !skipDisable.includes('MultiplicityEditorModel.min')) }], + max: [{ value: this.max, disabled: (disabled && !skipDisable.includes('MultiplicityEditorModel.max')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/page-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/page-editor-model.ts index 5b88d48b3..1a35db433 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/page-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/page-editor-model.ts @@ -21,11 +21,11 @@ export class PageEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - title: [this.title, [Validators.required]], - id: [this.id, [Validators.required]], - ordinal: [this.ordinal] + title: [{ value: this.title, disabled: (disabled && !skipDisable.includes('PageEditorModel.title')) }, [Validators.required]], + id: [{ value: this.id, disabled: (disabled && !skipDisable.includes('PageEditorModel.id')) }, [Validators.required]], + ordinal: [{ value: this.ordinal, disabled: (disabled && !skipDisable.includes('PageEditorModel.ordinal')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/rule-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/rule-editor-model.ts index b4d1ad698..6d029f80e 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/rule-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/rule-editor-model.ts @@ -18,14 +18,14 @@ export class RuleEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ // sourceField: [this.sourceField], - target: [this.target], - ruleStyle: [this.ruleStyle], - value: [this.value], - ruleType: [this.ruleType], - valueType: [this.valueType] + target: [{ value: this.target, disabled: (disabled && !skipDisable.includes('RuleEditorModel.target')) }], + ruleStyle: [{ value: this.ruleStyle, disabled: (disabled && !skipDisable.includes('RuleEditorModel.ruleStyle')) }], + value: [{ value: this.value, disabled: (disabled && !skipDisable.includes('RuleEditorModel.value')) }], + ruleType: [{ value: this.ruleType, disabled: (disabled && !skipDisable.includes('RuleEditorModel.ruleType')) }], + valueType: [{ value: this.valueType, disabled: (disabled && !skipDisable.includes('RuleEditorModel.valueType')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/section-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/section-editor-model.ts index ad14a15db..32eefaa3b 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/section-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/section-editor-model.ts @@ -25,31 +25,31 @@ export class SectionEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { - const formGroup: FormGroup = new FormBuilder().group({}); + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { + const formGroup: FormGroup = new FormBuilder().group({ + id: [{ value: this.id, disabled: (disabled && !skipDisable.includes('SectionEditorModel.id')) }, [Validators.required, Validators.pattern('^[^<_>]+$')]], + page: [{ value: this.page, disabled: (disabled && !skipDisable.includes('SectionEditorModel.page')) }, [Validators.required]], + title: [{ value: this.title, disabled: (disabled && !skipDisable.includes('SectionEditorModel.title')) }], + description: [{ value: this.description, disabled: (disabled && !skipDisable.includes('SectionEditorModel.description')) }], + ordinal: [{ value: this.ordinal, disabled: (disabled && !skipDisable.includes('SectionEditorModel.ordinal')) }], + defaultVisibility: [{ value: this.defaultVisibility, disabled: (disabled && !skipDisable.includes('SectionEditorModel.defaultVisibility')) }] + }); const sectionsFormArray = new Array(); if (this.sections) { this.sections.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); sectionsFormArray.push(form); }); } const compositeFieldsFormArray = new Array(); if (this.fieldSets) { this.fieldSets.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); compositeFieldsFormArray.push(form); }); } - formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray)); formGroup.addControl('fieldSets', this.formBuilder.array(compositeFieldsFormArray)); - formGroup.addControl('defaultVisibility', new FormControl(this.defaultVisibility)); - formGroup.addControl('page', new FormControl(this.page, [Validators.required])); - formGroup.addControl('id', new FormControl(this.id, [Validators.required,Validators.pattern('^[^<_>]+$')])); - formGroup.addControl('title', new FormControl(this.title)); - formGroup.addControl('description', new FormControl(this.description)); - formGroup.addControl('ordinal', new FormControl(this.ordinal)); if (!formGroup.controls['defaultVisibility'].value) { formGroup.controls['defaultVisibility'].setValue(true); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/view-style-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/view-style-editor-model.ts index 89eb6087e..de61824a9 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/view-style-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/view-style-editor-model.ts @@ -12,11 +12,10 @@ export class ViewStyleEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - cssClass: [this.cssClass], - renderStyle: [this.renderStyle] - + cssClass: [{ value: this.cssClass, disabled: (disabled && !skipDisable.includes('ViewStyleEditorModel.cssClass')) }], + renderStyle: [{ value: this.renderStyle, disabled: (disabled && !skipDisable.includes('ViewStyleEditorModel.renderStyle')) }] }); return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/visibility-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/visibility-editor-model.ts index 9068bf021..806b09b68 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/visibility-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/visibility-editor-model.ts @@ -15,15 +15,15 @@ export class VisibilityEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { const formGroup = this.formBuilder.group({ - style: [this.style] + style: [{ value: this.style, disabled: (disabled && !skipDisable.includes('VisibilityEditorModel.style')) }] }); const rulesFormArray = new Array(); if (this.rules) { this.rules.forEach(rule => { - const form: FormGroup = rule.buildForm(); + const form: FormGroup = rule.buildForm(disabled, skipDisable); rulesFormArray.push(form); }); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor-model.ts index 4cf1a9fcd..dc809e5e1 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor-model.ts @@ -22,25 +22,26 @@ export class DatasetProfileEditorModel extends BaseFormModel { return this; } - buildForm(): FormGroup { - const formGroup: FormGroup = new FormBuilder().group({}); + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { + const formGroup: FormGroup = new FormBuilder().group({ + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('DatasetProfileEditorModel.label')) }, [Validators.required]], + status: [{ value: this.status, disabled: (disabled && !skipDisable.includes('DatasetProfileEditorModel.status')) }], + version: [{ value: this.version, disabled: (disabled && !skipDisable.includes('DatasetProfileEditorModel.version')) }] + }); const sectionsFormArray = new Array(); this.sections.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); sectionsFormArray.push(form); }); formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray)); const pagesFormArray = new Array(); this.pages.forEach(item => { - const form: FormGroup = item.buildForm(); + const form: FormGroup = item.buildForm(disabled, skipDisable); pagesFormArray.push(form); }); formGroup.addControl('pages', this.formBuilder.array(pagesFormArray)); - formGroup.addControl('label', new FormControl(this.label, Validators.required)); - formGroup.addControl('status', new FormControl(this.status)); - formGroup.addControl('version', new FormControl(this.version)); return formGroup; } } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts index f8ecac49c..213f44b86 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts @@ -17,6 +17,9 @@ import { DatasetProfileEditorModel } from './dataset-profile-editor-model'; import { ConfirmationDialogComponent } from '../../../../library/confirmation-dialog/confirmation-dialog.component'; import { DatasetProfileEnum } from '../../../../core/common/enum/dataset-profile'; import * as FileSaver from 'file-saver'; +//import * as data from 'src/assets/resources/skipDisable.json'; + +const skipDisable: any[] = require('../../../../../assets/resources/skipDisable.json'); @Component({ selector: 'app-dataset-profile-editor-component', @@ -65,10 +68,11 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn try { this.dataModel = new DatasetProfileEditorModel().fromModel(data); // this.isDeleted = this.masterItem.isActive === IsActive.Inactive; - this.form = this.dataModel.buildForm(); if (this.dataModel.status === DatasetProfileEnum.FINALIZED) { - this.form.disable(); + this.form = this.dataModel.buildForm(true, skipDisable); this.viewOnly = true; + } else { + this.form = this.dataModel.buildForm(); } this.prepareForm(); } catch { @@ -287,8 +291,4 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn } return filename; } - - - - } diff --git a/dmp-frontend/src/assets/resources/skipDisable.json b/dmp-frontend/src/assets/resources/skipDisable.json new file mode 100644 index 000000000..f87242f24 --- /dev/null +++ b/dmp-frontend/src/assets/resources/skipDisable.json @@ -0,0 +1,13 @@ +[ + "DatasetProfileEditorModel.label", + "SectionEditorModel.title", + "SectionEditorModel.description", + "FieldSetEditorModel.title", + "FieldSetEditorModel.description", + "FieldSetEditorModel.extendedDescription", + "FieldSetEditorModel.additionalInformation", + "TextAreaFieldDataEditorModel.label", + "FreeTextFieldDataEditorModel.label", + "WordListFieldDataEditorModel.label", + "FieldDataOptionEditorModel.label" +]