From 3d6cebf55142d7f69a3e0eb85506eaf8eac03ae6 Mon Sep 17 00:00:00 2001 From: mohan Date: Fri, 8 Nov 2024 21:07:22 +0530 Subject: [PATCH 1/5] Bugfix : minimum value constraint to quantity input in activity dialog --- .../create-or-update-activity-dialog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 7795688c0..dba624064 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -186,7 +186,7 @@ > Quantity - +
Date: Mon, 11 Nov 2024 22:08:22 +0530 Subject: [PATCH 2/5] Bugfix: validate quantity input in create/update activity dialog --- ...ate-or-update-activity-dialog.component.ts | 37 ++++++++++++++++++- .../create-or-update-activity-dialog.html | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index cb21c255d..03c1dda69 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -148,7 +148,42 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ], updateAccountBalance: [false] }); - + this.activityForm.get('quantity').valueChanges.subscribe(async () => { + const activity = { quantity: this.activityForm.get('quantity').value }; + try { + const ignoredFields = [ + 'accountId', + 'assetClass', + 'assetSubClass', + 'comment', + 'currency', + 'customCurrency', + 'dataSource', + 'date', + 'fee', + 'symbol', + 'tags', + 'type', + 'unitPrice', + 'updateAccountBalance' + ]; + if (this.mode === 'create') { + await validateObjectForForm({ + classDto: CreateOrderDto, + form: this.activityForm, + ignoreFields: ignoredFields, + object: activity + }); + } else { + await validateObjectForForm({ + classDto: UpdateOrderDto, + form: this.activityForm, + ignoreFields: ignoredFields, + object: activity + }); + } + } catch (error) {} + }); this.activityForm.valueChanges .pipe( // Slightly delay until the more specific form control value changes have diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index dba624064..7795688c0 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -186,7 +186,7 @@ > Quantity - +
Date: Thu, 14 Nov 2024 22:55:59 +0530 Subject: [PATCH 3/5] Bugfix: streamline quantity validation logic in create/update activity dialog --- ...ate-or-update-activity-dialog.component.ts | 53 ++++++------------- 1 file changed, 17 insertions(+), 36 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 03c1dda69..b32f08baa 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -148,42 +148,6 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ], updateAccountBalance: [false] }); - this.activityForm.get('quantity').valueChanges.subscribe(async () => { - const activity = { quantity: this.activityForm.get('quantity').value }; - try { - const ignoredFields = [ - 'accountId', - 'assetClass', - 'assetSubClass', - 'comment', - 'currency', - 'customCurrency', - 'dataSource', - 'date', - 'fee', - 'symbol', - 'tags', - 'type', - 'unitPrice', - 'updateAccountBalance' - ]; - if (this.mode === 'create') { - await validateObjectForForm({ - classDto: CreateOrderDto, - form: this.activityForm, - ignoreFields: ignoredFields, - object: activity - }); - } else { - await validateObjectForForm({ - classDto: UpdateOrderDto, - form: this.activityForm, - ignoreFields: ignoredFields, - object: activity - }); - } - } catch (error) {} - }); this.activityForm.valueChanges .pipe( // Slightly delay until the more specific form control value changes have @@ -192,6 +156,23 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { takeUntil(this.unsubscribeSubject) ) .subscribe(async () => { + const activity = { quantity: this.activityForm.get('quantity').value }; + + try { + if (this.mode === 'create') { + await validateObjectForForm({ + classDto: CreateOrderDto, + form: this.activityForm, + object: activity + }); + } else { + await validateObjectForForm({ + classDto: UpdateOrderDto, + form: this.activityForm, + object: activity + }); + } + } catch (error) {} let exchangeRateOfUnitPrice = 1; this.activityForm.get('feeInCustomCurrency').setErrors(null); From 039233ed56d02f5d0f6a1a0de85a012b9273164d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 20 Nov 2024 20:25:50 +0100 Subject: [PATCH 4/5] Refactoring --- ...ate-or-update-activity-dialog.component.ts | 73 +++++++++++-------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index b32f08baa..b968251cb 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -148,6 +148,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ], updateAccountBalance: [false] }); + this.activityForm.valueChanges .pipe( // Slightly delay until the more specific form control value changes have @@ -156,23 +157,30 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { takeUntil(this.unsubscribeSubject) ) .subscribe(async () => { - const activity = { quantity: this.activityForm.get('quantity').value }; - try { if (this.mode === 'create') { + const activity = this.getActivity() as CreateOrderDto; + await validateObjectForForm({ classDto: CreateOrderDto, form: this.activityForm, + ignoreFields: ['dataSource', 'date'], object: activity }); } else { + const activity = this.getActivity() as UpdateOrderDto; + await validateObjectForForm({ classDto: UpdateOrderDto, form: this.activityForm, + ignoreFields: ['dataSource', 'date'], object: activity }); } - } catch (error) {} + } catch (error) { + console.error(error); + } + let exchangeRateOfUnitPrice = 1; this.activityForm.get('feeInCustomCurrency').setErrors(null); @@ -480,31 +488,13 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { } public async onSubmit() { - const activity: CreateOrderDto | UpdateOrderDto = { - accountId: this.activityForm.get('accountId').value, - assetClass: this.activityForm.get('assetClass').value, - assetSubClass: this.activityForm.get('assetSubClass').value, - comment: this.activityForm.get('comment').value || null, - currency: this.activityForm.get('currency').value, - customCurrency: this.activityForm.get('currencyOfUnitPrice').value, - date: this.activityForm.get('date').value, - dataSource: this.activityForm.get('dataSource').value, - fee: this.activityForm.get('fee').value, - quantity: this.activityForm.get('quantity').value, - symbol: - this.activityForm.get('searchSymbol').value?.symbol === undefined || - isUUID(this.activityForm.get('searchSymbol').value?.symbol) - ? this.activityForm.get('name').value - : this.activityForm.get('searchSymbol').value.symbol, - tags: this.activityForm.get('tags').value, - type: this.activityForm.get('type').value, - unitPrice: this.activityForm.get('unitPrice').value - }; - try { if (this.mode === 'create') { - (activity as CreateOrderDto).updateAccountBalance = - this.activityForm.get('updateAccountBalance').value; + const activity = this.getActivity() as CreateOrderDto; + + activity.updateAccountBalance = this.activityForm.get( + 'updateAccountBalance' + ).value; await validateObjectForForm({ classDto: CreateOrderDto, @@ -515,16 +505,18 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.dialogRef.close(activity as CreateOrderDto); } else { - (activity as UpdateOrderDto).id = this.data.activity.id; + const activity = this.getActivity() as UpdateOrderDto; + + activity.id = this.data.activity.id; await validateObjectForForm({ classDto: UpdateOrderDto, form: this.activityForm, ignoreFields: ['dataSource', 'date'], - object: activity as UpdateOrderDto + object: activity }); - this.dialogRef.close(activity as UpdateOrderDto); + this.dialogRef.close(activity); } } catch (error) { console.error(error); @@ -546,6 +538,29 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { }); } + private getActivity(): CreateOrderDto | UpdateOrderDto { + return { + accountId: this.activityForm.get('accountId').value, + assetClass: this.activityForm.get('assetClass').value, + assetSubClass: this.activityForm.get('assetSubClass').value, + comment: this.activityForm.get('comment').value || null, + currency: this.activityForm.get('currency').value, + customCurrency: this.activityForm.get('currencyOfUnitPrice').value, + date: this.activityForm.get('date').value, + dataSource: this.activityForm.get('dataSource').value, + fee: this.activityForm.get('fee').value, + quantity: this.activityForm.get('quantity').value, + symbol: + this.activityForm.get('searchSymbol').value?.symbol === undefined || + isUUID(this.activityForm.get('searchSymbol').value?.symbol) + ? this.activityForm.get('name').value + : this.activityForm.get('searchSymbol').value.symbol, + tags: this.activityForm.get('tags').value, + type: this.activityForm.get('type').value, + unitPrice: this.activityForm.get('unitPrice').value + }; + } + private updateSymbol() { this.isLoading = true; this.changeDetectorRef.markForCheck(); From 6f6510ac2ce19a4c29a55cd6c99858a109e69614 Mon Sep 17 00:00:00 2001 From: mohan Date: Sun, 24 Nov 2024 01:32:38 +0530 Subject: [PATCH 5/5] Bugfix: remove unnecessary error resets for currency fields in activity dialog --- .../create-or-update-activity-dialog.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index b968251cb..cbae94ceb 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -183,9 +183,6 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { let exchangeRateOfUnitPrice = 1; - this.activityForm.get('feeInCustomCurrency').setErrors(null); - this.activityForm.get('unitPriceInCustomCurrency').setErrors(null); - const currency = this.activityForm.get('currency').value; const currencyOfUnitPrice = this.activityForm.get( 'currencyOfUnitPrice'