Skip to content
Snippets Groups Projects
Commit c595b1bf authored by Florent Poittevin's avatar Florent Poittevin
Browse files

Apply form definition pattern to org unit form

parent 10262d69
No related branches found
No related tags found
1 merge request!24Fpo/refacto generic crud
...@@ -20,7 +20,6 @@ import AccessModelEnum = DepositsModel.AccessModelEnum; ...@@ -20,7 +20,6 @@ import AccessModelEnum = DepositsModel.AccessModelEnum;
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class FormComponent extends AbstractFormComponent<DepositsModel> { export class FormComponent extends AbstractFormComponent<DepositsModel> {
formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition(); formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
get accessModelEnum(): typeof AccessModelEnum { get accessModelEnum(): typeof AccessModelEnum {
......
<form [formGroup]="form" (ngSubmit)="onSubmit()"> <form [formGroup]="form" (ngSubmit)="onSubmit()">
<mat-form-field> <mat-form-field>
<mat-label>{{'organizationalUnit.name' | translate }}</mat-label> <mat-label>{{'organizationalUnit.name' | translate }}</mat-label>
<input [formControlName]="name" <input [formControlName]="formDefinition.name"
matInput matInput
placeholder="{{'organizationalUnit.name' | translate }}" 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> </mat-form-field>
<dlcm-searchable-multi-select [list]="listSubmissionPolicies" <dlcm-searchable-multi-select [list]="listSubmissionPolicies"
[formControl]="form.get(submissionPolicies)" [formControl]="form.get(formDefinition.submissionPolicies)"
[labelKey]="'name'" [labelKey]="'name'"
[valueKey]="'resId'" [valueKey]="'resId'"
[placeholder]="'organizationalUnit.submissionPolicy' | translate" [placeholder]="'organizationalUnit.submissionPolicy' | translate"
...@@ -18,30 +18,30 @@ ...@@ -18,30 +18,30 @@
</dlcm-searchable-multi-select> </dlcm-searchable-multi-select>
<mat-form-field> <mat-form-field>
<input [formControlName]="description" <input [formControlName]="formDefinition.description"
matInput matInput
placeholder="{{'organizationalUnit.description' | translate }}" 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>
<mat-form-field> <mat-form-field>
<input [formControlName]="openingDate" matInput [matDatepicker]="openingDateDatepicker" <input [formControlName]="formDefinition.openingDate" matInput [matDatepicker]="openingDateDatepicker"
placeholder="{{'organizationalUnit.openingDate' | translate }}"> placeholder="{{'organizationalUnit.openingDate' | translate }}">
<mat-datepicker-toggle matSuffix [for]="openingDateDatepicker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="openingDateDatepicker"></mat-datepicker-toggle>
<mat-datepicker #openingDateDatepicker></mat-datepicker> <mat-datepicker #openingDateDatepicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field>
<input [formControlName]="closingDate" matInput [matDatepicker]="closingDateDatepicker" <input [formControlName]="formDefinition.closingDate" matInput [matDatepicker]="closingDateDatepicker"
placeholder="{{'organizationalUnit.closingDate' | translate }}"> placeholder="{{'organizationalUnit.closingDate' | translate }}">
<mat-datepicker-toggle matSuffix [for]="closingDateDatepicker"></mat-datepicker-toggle> <mat-datepicker-toggle matSuffix [for]="closingDateDatepicker"></mat-datepicker-toggle>
<mat-datepicker #closingDateDatepicker></mat-datepicker> <mat-datepicker #closingDateDatepicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-checkbox [formControlName]="isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox> <mat-checkbox [formControlName]="formDefinition.isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox>
<mat-checkbox [formControlName]="open">{{'organizationalUnit.open' | translate }}</mat-checkbox> <mat-checkbox [formControlName]="formDefinition.open">{{'organizationalUnit.open' | translate }}</mat-checkbox>
<div class="submit-button"> <div class="submit-button">
<button *ngIf="!readonly" <button *ngIf="!readonly"
......
...@@ -3,6 +3,7 @@ import {FormBuilder, Validators} from "@angular/forms"; ...@@ -3,6 +3,7 @@ import {FormBuilder, Validators} from "@angular/forms";
import {OrganizationalUnitsModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api"; import {OrganizationalUnitsModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api";
import {AbstractFormComponent} from "@app/shared/components/abstract-form/abstract-form.component"; import {AbstractFormComponent} from "@app/shared/components/abstract-form/abstract-form.component";
import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum"; 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 {DateUtil} from "@app/shared/utils/date.util";
import _ from "lodash"; import _ from "lodash";
...@@ -13,6 +14,8 @@ import _ from "lodash"; ...@@ -13,6 +14,8 @@ import _ from "lodash";
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class FormComponent extends AbstractFormComponent<OrganizationalUnitsModel> implements OnChanges { export class FormComponent extends AbstractFormComponent<OrganizationalUnitsModel> implements OnChanges {
formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
@Input() @Input()
selectedSubmissionPolicies: SubmissionPoliciesModel[]; selectedSubmissionPolicies: SubmissionPoliciesModel[];
...@@ -22,14 +25,6 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode ...@@ -22,14 +25,6 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode
@Input() @Input()
listPreservationPolicies: PreservationPoliciesModel[]; 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) { constructor(private fb: FormBuilder) {
super(); super();
} }
...@@ -41,31 +36,31 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode ...@@ -41,31 +36,31 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode
if (changes.selectedSubmissionPolicies && changes.selectedSubmissionPolicies.currentValue.length !== 0) { if (changes.selectedSubmissionPolicies && changes.selectedSubmissionPolicies.currentValue.length !== 0) {
const newValue = _.map(changes.selectedSubmissionPolicies.currentValue, ModelAttributeEnum.resId); 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 { protected initNewForm(): void {
this.form = this.fb.group({ this.form = this.fb.group({
name: ["", Validators.required], [this.formDefinition.name]: ["", Validators.required],
description: ["", Validators.required], [this.formDefinition.description]: ["", Validators.required],
openingDate: [""], [this.formDefinition.openingDate]: [""],
closingDate: [""], [this.formDefinition.closingDate]: [""],
isEmpty: [false], [this.formDefinition.isEmpty]: [false],
open: [false], [this.formDefinition.open]: [false],
submissionPolicies: [], [this.formDefinition.submissionPolicies]: [],
}); });
} }
protected bindFormTo(organizationalUnit: OrganizationalUnitsModel): void { protected bindFormTo(organizationalUnit: OrganizationalUnitsModel): void {
this.form = this.fb.group({ this.form = this.fb.group({
name: [organizationalUnit.name, Validators.required], [this.formDefinition.name]: [organizationalUnit.name, Validators.required],
description: [organizationalUnit.description, Validators.required], [this.formDefinition.description]: [organizationalUnit.description, Validators.required],
openingDate: [organizationalUnit.openingDate], [this.formDefinition.openingDate]: [organizationalUnit.openingDate],
closingDate: [organizationalUnit.closingDate], [this.formDefinition.closingDate]: [organizationalUnit.closingDate],
isEmpty: [organizationalUnit.isEmpty], [this.formDefinition.isEmpty]: [organizationalUnit.isEmpty],
open: [organizationalUnit.open], [this.formDefinition.open]: [organizationalUnit.open],
submissionPolicies: [_.map(this.selectedSubmissionPolicies, ModelAttributeEnum.resId)], [this.formDefinition.submissionPolicies]: [_.map(this.selectedSubmissionPolicies, ModelAttributeEnum.resId)],
}); });
} }
...@@ -75,3 +70,13 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode ...@@ -75,3 +70,13 @@ export class FormComponent extends AbstractFormComponent<OrganizationalUnitsMode
return organizationalUnit; 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";
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment