diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f0b4ce1..5638b923 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Supported enter key press to submit the form of the create or update account dialog - Added the version to the admin control panel - Added pagination parameters (`skip`, `take`) to the endpoint `GET api/v1/order` diff --git a/apps/api/src/app/account/create-account.dto.ts b/apps/api/src/app/account/create-account.dto.ts index eb24d959..fff982ec 100644 --- a/apps/api/src/app/account/create-account.dto.ts +++ b/apps/api/src/app/account/create-account.dto.ts @@ -12,7 +12,7 @@ import { isString } from 'lodash'; export class CreateAccountDto { @IsOptional() @IsString() - accountType: AccountType; + accountType?: AccountType; @IsNumber() balance: number; diff --git a/apps/api/src/app/account/update-account.dto.ts b/apps/api/src/app/account/update-account.dto.ts index a9191448..7ab82945 100644 --- a/apps/api/src/app/account/update-account.dto.ts +++ b/apps/api/src/app/account/update-account.dto.ts @@ -12,7 +12,7 @@ import { isString } from 'lodash'; export class UpdateAccountDto { @IsOptional() @IsString() - accountType: AccountType; + accountType?: AccountType; @IsNumber() balance: number; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts index f0178f2f..3babc14b 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts @@ -4,7 +4,10 @@ import { Inject, OnDestroy } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; +import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { DataService } from '@ghostfolio/client/services/data.service'; import { Subject } from 'rxjs'; @@ -18,15 +21,17 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; templateUrl: 'create-or-update-account-dialog.html' }) export class CreateOrUpdateAccountDialog implements OnDestroy { + public accountForm: FormGroup; public currencies: string[] = []; public platforms: { id: string; name: string }[]; private unsubscribeSubject = new Subject(); public constructor( + @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams + private formBuilder: FormBuilder ) {} ngOnInit() { @@ -34,12 +39,42 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { this.currencies = currencies; this.platforms = platforms; + + this.accountForm = this.formBuilder.group({ + accountId: [{ disabled: true, value: this.data.account.id }], + balance: [this.data.account.balance, Validators.required], + comment: [this.data.account.comment], + currency: [this.data.account.currency, Validators.required], + isExcluded: [this.data.account.isExcluded], + name: [this.data.account.name, Validators.required], + platformId: [this.data.account.platformId] + }); } public onCancel() { this.dialogRef.close(); } + public onSubmit() { + const account: CreateAccountDto | UpdateAccountDto = { + balance: this.accountForm.controls['balance'].value, + comment: this.accountForm.controls['comment'].value, + currency: this.accountForm.controls['currency'].value, + id: this.accountForm.controls['accountId'].value, + isExcluded: this.accountForm.controls['isExcluded'].value, + name: this.accountForm.controls['name'].value, + platformId: this.accountForm.controls['platformId'].value + }; + + if (this.data.account.id) { + (account as UpdateAccountDto).id = this.data.account.id; + } else { + delete (account as CreateAccountDto).id; + } + + this.dialogRef.close({ account }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index 7b6f399a..69972c7d 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1,17 +1,22 @@ -
+

Update account

Add account

Name - +
Currency - + {{ currency }} @@ -21,20 +26,14 @@
Cash Balance - + {{ data.account.currency }}
Platform - + {{ platform.name }}
- Exclude from Analysis
Account ID - +
@@ -80,8 +70,8 @@