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

Add form definition

parent dc38d3b0
No related branches found
No related tags found
1 merge request!24Fpo/refacto generic crud
......@@ -2,37 +2,37 @@
(ngSubmit)="onSubmit()">
<mat-form-field>
<mat-label>{{'deposit.organizationUnit' | translate }}</mat-label>
<mat-select [formControlName]="organizationalUnitId"
[required]="isRequired(organizationalUnitId)">
<mat-select [formControlName]="formDefinition.organizationalUnitId"
[required]="isRequired(formDefinition.organizationalUnitId)">
<mat-option *ngFor="let orgUnit of organizationalUnits" [value]="orgUnit.resId">
{{orgUnit.name}}
</mat-option>
</mat-select>
<mat-error *ngIf="getFormControl(organizationalUnitId).invalid">{{'required' | translate}}</mat-error>
<mat-error *ngIf="getFormControl(formDefinition.organizationalUnitId).invalid">{{'required' | translate}}</mat-error>
</mat-form-field>
<mat-form-field>
<mat-label>{{'deposit.title' | translate }}</mat-label>
<input [formControlName]="title"
<input [formControlName]="formDefinition.title"
matInput
placeholder="{{'deposit.title.placeholder' | translate }}"
[required]="isRequired(title)"
[required]="isRequired(formDefinition.title)"
>
<mat-error *ngIf="getFormControl(title).invalid">{{'required' | translate}}</mat-error>
<mat-error *ngIf="getFormControl(formDefinition.title).invalid">{{'required' | translate}}</mat-error>
</mat-form-field>
<mat-form-field>
<input [formControlName]="description"
<input [formControlName]="formDefinition.description"
matInput
placeholder="{{'deposit.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-label>{{'deposit.language' | translate }}</mat-label>
<mat-select [formControlName]="languageId">
<mat-select [formControlName]="formDefinition.languageId">
<mat-option *ngFor="let language of languages" [value]="language.resId">
{{language.code}}
</mat-option>
......@@ -40,33 +40,34 @@
</mat-form-field>
<mat-form-field>
<input [formControlName]="publicationDate" matInput [matDatepicker]="publicationDateDatepicker"
<input [formControlName]="formDefinition.publicationDate" matInput [matDatepicker]="publicationDateDatepicker"
placeholder="{{'deposit.publicationDate' | translate }}">
<mat-datepicker-toggle matSuffix [for]="publicationDateDatepicker"></mat-datepicker-toggle>
<mat-datepicker #publicationDateDatepicker></mat-datepicker>
</mat-form-field>
<mat-form-field>
<input [formControlName]="collectionBegin" matInput [matDatepicker]="collectionBeginDatepicker"
<input [formControlName]="formDefinition.collectionBegin" matInput [matDatepicker]="collectionBeginDatepicker"
placeholder="{{'deposit.collectionBegin' | translate }}">
<mat-datepicker-toggle matSuffix [for]="collectionBeginDatepicker"></mat-datepicker-toggle>
<mat-datepicker #collectionBeginDatepicker></mat-datepicker>
</mat-form-field>
<mat-form-field>
<input [formControlName]="collectionEnd" matInput [matDatepicker]="collectionEndDatepicker" placeholder="{{'deposit.collectionEnd' | translate }}">
<input [formControlName]="formDefinition.collectionEnd" matInput [matDatepicker]="collectionEndDatepicker"
placeholder="{{'deposit.collectionEnd' | translate }}">
<mat-datepicker-toggle matSuffix [for]="collectionEndDatepicker"></mat-datepicker-toggle>
<mat-datepicker #collectionEndDatepicker></mat-datepicker>
</mat-form-field>
<mat-form-field>
<input [formControlName]="author" matInput placeholder="{{'deposit.author' | translate }}">
<input [formControlName]="formDefinition.author" matInput placeholder="{{'deposit.author' | translate }}">
<mat-hint>{{'deposit.hint.author' | translate }}</mat-hint>
</mat-form-field>
<mat-form-field>
<mat-label>{{'deposit.accessLevel' | translate }}</mat-label>
<mat-select [formControlName]="accessLevel">
<mat-select [formControlName]="formDefinition.accessLevel">
<mat-option [value]="accessModelEnum.PUBLIC">
{{accessModelEnum.PUBLIC}}
</mat-option>
......@@ -79,11 +80,11 @@
</mat-select>
</mat-form-field>
<mat-checkbox [formControlName]="hasEmbargo">{{'deposit.hasEmbargo' | translate }}</mat-checkbox>
<mat-checkbox [formControlName]="formDefinition.hasEmbargo">{{'deposit.hasEmbargo' | translate }}</mat-checkbox>
<mat-form-field>
<mat-label>{{'deposit.license' | translate }}</mat-label>
<mat-select [formControlName]="licenseId">
<mat-select [formControlName]="formDefinition.licenseId">
<mat-option *ngFor="let license of licenses" [value]="license.resId">
{{license.title}}
</mat-option>
......@@ -92,7 +93,7 @@
<mat-form-field>
<mat-label>{{'deposit.submissionPolicy' | translate }}</mat-label>
<mat-select [formControlName]="submissionPolicyId">
<mat-select [formControlName]="formDefinition.submissionPolicyId">
<mat-option *ngFor="let submission of submissionPolicies" [value]="submission.resId">
{{submission.name}}
</mat-option>
......@@ -101,7 +102,7 @@
<mat-form-field>
<mat-label>{{'deposit.preservationPolicy' | translate }}</mat-label>
<mat-select [formControlName]="preservationPolicyId">
<mat-select [formControlName]="formDefinition.preservationPolicyId">
<mat-option *ngFor="let preservation of preservationPolicies" [value]="preservation.resId">
{{preservation.name}}
</mat-option>
......
......@@ -9,6 +9,7 @@ import {
SubmissionPoliciesModel,
} from "@app/generated-api";
import {AbstractFormComponent} from "@app/shared/components/abstract-form/abstract-form.component";
import {BaseFormDefinition} from "@app/shared/models/base-form-definition.model";
import {DateUtil} from "@app/shared/utils/date.util";
import AccessModelEnum = DepositsModel.AccessModelEnum;
......@@ -19,21 +20,12 @@ import AccessModelEnum = DepositsModel.AccessModelEnum;
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class FormComponent extends AbstractFormComponent<DepositsModel> {
organizationalUnitId: string = "organizationalUnitId";
title: string = "title";
description: string = "description";
languageId: string = "languageId";
publicationDate: string = "publicationDate";
collectionBegin: string = "collectionBegin";
collectionEnd: string = "collectionEnd";
author: string = "author";
accessLevel: string = "accessLevel";
hasEmbargo: string = "hasEmbargo";
licenseId: string = "licenseId";
submissionPolicyId: string = "submissionPolicyId";
preservationPolicyId: string = "preservationPolicyId";
accessModelEnum: AccessModelEnum = AccessModelEnum;
formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition();
get accessModelEnum(): typeof AccessModelEnum {
return AccessModelEnum;
}
@Input()
languages: LanguagesModel[];
......@@ -56,37 +48,37 @@ export class FormComponent extends AbstractFormComponent<DepositsModel> {
protected initNewForm(): void {
this.form = this.fb.group({
organizationalUnitId: ["", Validators.required],
title: ["", Validators.required],
description: ["", Validators.required],
languageId: [""],
publicationDate: [""],
collectionBegin: [""],
collectionEnd: [""],
author: [""],
accessLevel: [AccessModelEnum.PUBLIC],
hasEmbargo: [false],
licenseId: [""],
submissionPolicyId: [""],
preservationPolicyId: [""],
[this.formDefinition.organizationalUnitId]: ["", Validators.required],
[this.formDefinition.title]: ["", Validators.required],
[this.formDefinition.description]: ["", Validators.required],
[this.formDefinition.languageId]: [""],
[this.formDefinition.publicationDate]: [""],
[this.formDefinition.collectionBegin]: [""],
[this.formDefinition.collectionEnd]: [""],
[this.formDefinition.author]: [""],
[this.formDefinition.accessLevel]: [AccessModelEnum.PUBLIC],
[this.formDefinition.hasEmbargo]: [false],
[this.formDefinition.licenseId]: [""],
[this.formDefinition.submissionPolicyId]: [""],
[this.formDefinition.preservationPolicyId]: [""],
});
}
protected bindFormTo(deposit: DepositsModel): void {
this.form = this.fb.group({
organizationalUnitId: [deposit.organizationalUnitId, Validators.required],
title: [deposit.title, Validators.required],
description: [deposit.description, Validators.required],
languageId: [deposit.languageId],
publicationDate: [deposit.publicationDate],
collectionBegin: [deposit.collectionBegin],
collectionEnd: [deposit.collectionEnd],
author: [""],
accessLevel: [deposit.access],
hasEmbargo: [deposit.hasEmbargo],
licenseId: [deposit.licenseId],
submissionPolicyId: [deposit.submissionPolicyId],
preservationPolicyId: [deposit.preservationPolicyId],
[this.formDefinition.organizationalUnitId]: [deposit.organizationalUnitId, Validators.required],
[this.formDefinition.title]: [deposit.title, Validators.required],
[this.formDefinition.description]: [deposit.description, Validators.required],
[this.formDefinition.languageId]: [deposit.languageId],
[this.formDefinition.publicationDate]: [deposit.publicationDate],
[this.formDefinition.collectionBegin]: [deposit.collectionBegin],
[this.formDefinition.collectionEnd]: [deposit.collectionEnd],
[this.formDefinition.author]: [""],
[this.formDefinition.accessLevel]: [deposit.access],
[this.formDefinition.hasEmbargo]: [deposit.hasEmbargo],
[this.formDefinition.licenseId]: [deposit.licenseId],
[this.formDefinition.submissionPolicyId]: [deposit.submissionPolicyId],
[this.formDefinition.preservationPolicyId]: [deposit.preservationPolicyId],
});
}
......@@ -96,3 +88,19 @@ export class FormComponent extends AbstractFormComponent<DepositsModel> {
return deposit;
}
}
class FormComponentFormDefinition extends BaseFormDefinition {
organizationalUnitId: string = "organizationalUnitId";
title: string = "title";
description: string = "description";
languageId: string = "languageId";
publicationDate: string = "publicationDate";
collectionBegin: string = "collectionBegin";
collectionEnd: string = "collectionEnd";
author: string = "author";
accessLevel: string = "accessLevel";
hasEmbargo: string = "hasEmbargo";
licenseId: string = "licenseId";
submissionPolicyId: string = "submissionPolicyId";
preservationPolicyId: string = "preservationPolicyId";
}
export abstract class BaseFormDefinition {
}
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