From e16be979b46a15f7642107674f12f153338d9101 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 18 Aug 2026 20:36:54 +0200 Subject: [PATCH] Improve usability --- .../transfer-balance-dialog.component.ts | 37 ++++++++++++++++++- .../transfer-balance-dialog.html | 2 +- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts index 335ebd453..4f1a0efdc 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts @@ -2,7 +2,13 @@ import { TransferBalanceDto } from '@ghostfolio/common/dtos'; import { AccountWithPlatform } from '@ghostfolio/common/types'; import { GfAccountSelectorComponent } from '@ghostfolio/ui/account-selector'; -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + computed, + inject, + signal +} from '@angular/core'; import { FormControl, FormGroup, @@ -48,11 +54,22 @@ export class GfTransferBalanceDialogComponent { protected readonly labelFrom = $localize`From`; protected readonly labelTo = $localize`To`; + protected readonly toAccounts = computed(() => { + const fromAccountId = this.fromAccountId(); + + return this.accounts.filter(({ id }) => { + return id !== fromAccountId; + }); + }); + protected readonly transferBalanceForm: TransferBalanceForm = new FormGroup( { balance: new FormControl('', Validators.required), fromAccount: new FormControl('', Validators.required), - toAccount: new FormControl('', Validators.required) + toAccount: new FormControl( + { disabled: true, value: '' }, + Validators.required + ) }, { validators: this.compareAccounts @@ -62,14 +79,30 @@ export class GfTransferBalanceDialogComponent { private readonly dialogRef = inject>(MatDialogRef); + private readonly fromAccountId = signal(null); + public ngOnInit() { this.transferBalanceForm.controls.fromAccount.valueChanges.subscribe( (id) => { + this.fromAccountId.set(id); + const currency = this.getAccountById(id)?.currency; if (currency) { this.currency = currency; } + + const toAccountControl = this.transferBalanceForm.controls.toAccount; + + if (id) { + if (toAccountControl.value === id) { + toAccountControl.setValue(null); + } + + toAccountControl.enable(); + } else { + toAccountControl.disable(); + } } ); } diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html index 0b0f88805..2e9f60523 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -16,7 +16,7 @@