Browse Source

Refactoring

pull/3230/head
Thomas Kaul 1 year ago
parent
commit
9cd48c5d4e
  1. 24
      apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts
  2. 24
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  3. 30
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  4. 19
      apps/client/src/app/util/form.util.ts

24
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts

@ -103,7 +103,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy {
this.dialogRef.close(); this.dialogRef.close();
} }
public onSubmit() { public async onSubmit() {
const account: CreateAccountDto | UpdateAccountDto = { const account: CreateAccountDto | UpdateAccountDto = {
balance: this.accountForm.controls['balance'].value, balance: this.accountForm.controls['balance'].value,
comment: this.accountForm.controls['comment'].value, comment: this.accountForm.controls['comment'].value,
@ -116,19 +116,21 @@ export class CreateOrUpdateAccountDialog implements OnDestroy {
if (this.data.account.id) { if (this.data.account.id) {
(account as UpdateAccountDto).id = this.data.account.id; (account as UpdateAccountDto).id = this.data.account.id;
validateObjectForForm(account, UpdateAccountDto, this.accountForm).then( await validateObjectForForm({
() => { classDto: UpdateAccountDto,
this.dialogRef.close({ account }); form: this.accountForm,
} object: account
); });
} else { } else {
delete (account as CreateAccountDto).id; delete (account as CreateAccountDto).id;
validateObjectForForm(account, CreateAccountDto, this.accountForm).then( await validateObjectForForm({
() => { classDto: CreateAccountDto,
this.dialogRef.close({ account }); form: this.accountForm,
} object: account
); });
} }
this.dialogRef.close({ account });
} }
public ngOnDestroy() { public ngOnDestroy() {

24
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -452,7 +452,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
); );
} }
public onSubmit() { public async onSubmit() {
const activity: CreateOrderDto | UpdateOrderDto = { const activity: CreateOrderDto | UpdateOrderDto = {
accountId: this.activityForm.controls['accountId'].value, accountId: this.activityForm.controls['accountId'].value,
assetClass: this.activityForm.controls['assetClass'].value, assetClass: this.activityForm.controls['assetClass'].value,
@ -477,20 +477,22 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
if (this.data.activity.id) { if (this.data.activity.id) {
(activity as UpdateOrderDto).id = this.data.activity.id; (activity as UpdateOrderDto).id = this.data.activity.id;
validateObjectForForm(activity, UpdateOrderDto, this.activityForm).then( await validateObjectForForm({
() => { classDto: UpdateOrderDto,
this.dialogRef.close({ activity }); form: this.activityForm,
} object: activity as UpdateOrderDto
); });
} else { } else {
(activity as CreateOrderDto).updateAccountBalance = (activity as CreateOrderDto).updateAccountBalance =
this.activityForm.controls['updateAccountBalance'].value; this.activityForm.controls['updateAccountBalance'].value;
validateObjectForForm(activity, CreateOrderDto, this.activityForm).then( await validateObjectForForm({
() => { classDto: CreateOrderDto,
this.dialogRef.close({ activity }); form: this.activityForm,
} object: activity
); });
} }
this.dialogRef.close({ activity });
} }
public ngOnDestroy() { public ngOnDestroy() {

30
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html

@ -153,11 +153,6 @@
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Data Source</mat-label> <mat-label i18n>Data Source</mat-label>
<input formControlName="dataSource" matInput /> <input formControlName="dataSource" matInput />
<mat-error
*ngIf="activityForm.controls['dataSource'].errors?.validationError"
>
{{ activityForm.controls['dataSource'].errors?.validationError }}
</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
<div class="mb-3"> <div class="mb-3">
@ -227,6 +222,20 @@
</mat-option> </mat-option>
</mat-select> </mat-select>
</div> </div>
<mat-error
*ngIf="
activityForm.controls['unitPriceInCustomCurrency'].hasError(
'invalid'
)
"
><ng-container i18n
>Oops! Could not get the historical exchange rate
from</ng-container
>
{{
activityForm.controls['date']?.value | date: defaultDateFormat
}}</mat-error
>
</mat-form-field> </mat-form-field>
<button <button
*ngIf=" *ngIf="
@ -283,6 +292,17 @@
> >
{{ activityForm.controls['currencyOfUnitPrice'].value }} {{ activityForm.controls['currencyOfUnitPrice'].value }}
</div> </div>
<mat-error
*ngIf="
activityForm.controls['feeInCustomCurrency'].hasError('invalid')
"
><ng-container i18n
>Oops! Could not get the historical exchange rate from</ng-container
>
{{
activityForm.controls['date']?.value | date: defaultDateFormat
}}</mat-error
>
</mat-form-field> </mat-form-field>
</div> </div>
<div class="d-none"> <div class="d-none">

19
apps/client/src/app/util/form.util.ts

@ -2,18 +2,25 @@ import { FormGroup } from '@angular/forms';
import { plainToInstance } from 'class-transformer'; import { plainToInstance } from 'class-transformer';
import { validate } from 'class-validator'; import { validate } from 'class-validator';
export async function validateObjectForForm<T>( export async function validateObjectForForm<T>({
object: T, classDto,
classDto: { new (): T }, form,
form: FormGroup object
): Promise<void> { }: {
classDto: { new (): T };
form: FormGroup;
object: T;
}): Promise<void> {
const objectInstance = plainToInstance(classDto, object); const objectInstance = plainToInstance(classDto, object);
const errors = await validate(objectInstance as object); const errors = await validate(objectInstance as object);
if (errors.length === 0) return Promise.resolve(); if (errors.length === 0) {
return Promise.resolve();
}
for (const error of errors) { for (const error of errors) {
const formControl = form.get(error.property); const formControl = form.get(error.property);
if (formControl) { if (formControl) {
formControl.setErrors({ formControl.setErrors({
validationError: Object.values(error.constraints)[0] validationError: Object.values(error.constraints)[0]

Loading…
Cancel
Save