From c595b1bf3713c1865e1a5bc9788cfeab42c6159d Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Fri, 5 Jul 2019 16:53:00 +0200 Subject: [PATCH] Apply form definition pattern to org unit form --- .../deposit/components/form/form.component.ts | 1 - .../components/form/form.component.html | 22 ++++---- .../components/form/form.component.ts | 51 ++++++++++--------- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/app/deposit/components/form/form.component.ts b/src/app/deposit/components/form/form.component.ts index 2ad2a0232..c5981d5ea 100644 --- a/src/app/deposit/components/form/form.component.ts +++ b/src/app/deposit/components/form/form.component.ts @@ -20,7 +20,6 @@ import AccessModelEnum = DepositsModel.AccessModelEnum; changeDetection: ChangeDetectionStrategy.OnPush, }) export class FormComponent extends AbstractFormComponent<DepositsModel> { - formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition(); get accessModelEnum(): typeof AccessModelEnum { diff --git a/src/app/organizational-unit/components/form/form.component.html b/src/app/organizational-unit/components/form/form.component.html index b7557444f..4802dfb64 100644 --- a/src/app/organizational-unit/components/form/form.component.html +++ b/src/app/organizational-unit/components/form/form.component.html @@ -1,16 +1,16 @@ <form [formGroup]="form" (ngSubmit)="onSubmit()"> <mat-form-field> <mat-label>{{'organizationalUnit.name' | translate }}</mat-label> - <input [formControlName]="name" + <input [formControlName]="formDefinition.name" matInput placeholder="{{'organizationalUnit.name' | translate }}" - [required]="isRequired(name)" + [required]="isRequired(formDefinition.name)" > - <mat-error *ngIf="getFormControl(name).invalid">{{'required' | translate}}</mat-error> + <mat-error *ngIf="getFormControl(formDefinition.name).invalid">{{'required' | translate}}</mat-error> </mat-form-field> <dlcm-searchable-multi-select [list]="listSubmissionPolicies" - [formControl]="form.get(submissionPolicies)" + [formControl]="form.get(formDefinition.submissionPolicies)" [labelKey]="'name'" [valueKey]="'resId'" [placeholder]="'organizationalUnit.submissionPolicy' | translate" @@ -18,30 +18,30 @@ </dlcm-searchable-multi-select> <mat-form-field> - <input [formControlName]="description" + <input [formControlName]="formDefinition.description" matInput placeholder="{{'organizationalUnit.description' | translate }}" - [required]="isRequired(description)" + [required]="isRequired(formDefinition.description)" > - <mat-error *ngIf="getFormControl(description).invalid">{{'required' | translate}}</mat-error> + <mat-error *ngIf="getFormControl(formDefinition.description).invalid">{{'required' | translate}}</mat-error> </mat-form-field> <mat-form-field> - <input [formControlName]="openingDate" matInput [matDatepicker]="openingDateDatepicker" + <input [formControlName]="formDefinition.openingDate" matInput [matDatepicker]="openingDateDatepicker" placeholder="{{'organizationalUnit.openingDate' | translate }}"> <mat-datepicker-toggle matSuffix [for]="openingDateDatepicker"></mat-datepicker-toggle> <mat-datepicker #openingDateDatepicker></mat-datepicker> </mat-form-field> <mat-form-field> - <input [formControlName]="closingDate" matInput [matDatepicker]="closingDateDatepicker" + <input [formControlName]="formDefinition.closingDate" matInput [matDatepicker]="closingDateDatepicker" placeholder="{{'organizationalUnit.closingDate' | translate }}"> <mat-datepicker-toggle matSuffix [for]="closingDateDatepicker"></mat-datepicker-toggle> <mat-datepicker #closingDateDatepicker></mat-datepicker> </mat-form-field> - <mat-checkbox [formControlName]="isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox> - <mat-checkbox [formControlName]="open">{{'organizationalUnit.open' | translate }}</mat-checkbox> + <mat-checkbox [formControlName]="formDefinition.isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox> + <mat-checkbox [formControlName]="formDefinition.open">{{'organizationalUnit.open' | translate }}</mat-checkbox> <div class="submit-button"> <button *ngIf="!readonly" diff --git a/src/app/organizational-unit/components/form/form.component.ts b/src/app/organizational-unit/components/form/form.component.ts index dac4a7e5f..dd1f85873 100644 --- a/src/app/organizational-unit/components/form/form.component.ts +++ b/src/app/organizational-unit/components/form/form.component.ts @@ -3,6 +3,7 @@ import {FormBuilder, Validators} from "@angular/forms"; import {OrganizationalUnitsModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api"; import {AbstractFormComponent} from "@app/shared/components/abstract-form/abstract-form.component"; import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum"; +import {BaseFormDefinition} from "@app/shared/models/base-form-definition.model"; import {DateUtil} from "@app/shared/utils/date.util"; import _ from "lodash"; @@ -13,6 +14,8 @@ import _ from "lodash"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class FormComponent extends AbstractFormComponent<OrganizationalUnitsModel> implements OnChanges { + formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition(); + @Input() selectedSubmissionPolicies: SubmissionPoliciesModel[]; @@ -22,14 +25,6 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode @Input() listPreservationPolicies: PreservationPoliciesModel[]; - name: string = "name"; - description: string = "description"; - isEmpty: string = "isEmpty"; - closingDate: string = "closingDate"; - openingDate: string = "openingDate"; - submissionPolicies: string = ModelAttributeEnum.submissionPolicies; - open: string = "open"; - constructor(private fb: FormBuilder) { super(); } @@ -41,31 +36,31 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode if (changes.selectedSubmissionPolicies && changes.selectedSubmissionPolicies.currentValue.length !== 0) { const newValue = _.map(changes.selectedSubmissionPolicies.currentValue, ModelAttributeEnum.resId); - this.form.get(this.submissionPolicies).setValue(newValue); + this.form.get(this.formDefinition.submissionPolicies).setValue(newValue); } } protected initNewForm(): void { this.form = this.fb.group({ - name: ["", Validators.required], - description: ["", Validators.required], - openingDate: [""], - closingDate: [""], - isEmpty: [false], - open: [false], - submissionPolicies: [], + [this.formDefinition.name]: ["", Validators.required], + [this.formDefinition.description]: ["", Validators.required], + [this.formDefinition.openingDate]: [""], + [this.formDefinition.closingDate]: [""], + [this.formDefinition.isEmpty]: [false], + [this.formDefinition.open]: [false], + [this.formDefinition.submissionPolicies]: [], }); } protected bindFormTo(organizationalUnit: OrganizationalUnitsModel): void { this.form = this.fb.group({ - name: [organizationalUnit.name, Validators.required], - description: [organizationalUnit.description, Validators.required], - openingDate: [organizationalUnit.openingDate], - closingDate: [organizationalUnit.closingDate], - isEmpty: [organizationalUnit.isEmpty], - open: [organizationalUnit.open], - submissionPolicies: [_.map(this.selectedSubmissionPolicies, ModelAttributeEnum.resId)], + [this.formDefinition.name]: [organizationalUnit.name, Validators.required], + [this.formDefinition.description]: [organizationalUnit.description, Validators.required], + [this.formDefinition.openingDate]: [organizationalUnit.openingDate], + [this.formDefinition.closingDate]: [organizationalUnit.closingDate], + [this.formDefinition.isEmpty]: [organizationalUnit.isEmpty], + [this.formDefinition.open]: [organizationalUnit.open], + [this.formDefinition.submissionPolicies]: [_.map(this.selectedSubmissionPolicies, ModelAttributeEnum.resId)], }); } @@ -75,3 +70,13 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode return organizationalUnit; } } + +class FormComponentFormDefinition extends BaseFormDefinition { + name: string = "name"; + description: string = "description"; + isEmpty: string = "isEmpty"; + closingDate: string = "closingDate"; + openingDate: string = "openingDate"; + submissionPolicies: string = ModelAttributeEnum.submissionPolicies; + open: string = "open"; +} -- GitLab