Browse Source

Feature/remove deprecated item of activity type from create or update activity dialog (#5555)

* Remove deprecated item of activity type

* Update changelog
pull/5582/head
Attila Cseh 3 weeks ago
committed by GitHub
parent
commit
432251e108
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 45
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  3. 4
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  4. 8
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts
  5. 2
      libs/ui/src/lib/i18n.ts

1
CHANGELOG.md

@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Extended the tags selector component to support form control - Extended the tags selector component to support form control
- Changed the deprecated `ITEM` activity type to `VALUABLE` in the create or update activity dialog
### Fixed ### Fixed

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

@ -51,6 +51,7 @@ import { catchError, delay, takeUntil } from 'rxjs/operators';
import { DataService } from '../../../../services/data.service'; import { DataService } from '../../../../services/data.service';
import { validateObjectForForm } from '../../../../util/form.util'; import { validateObjectForForm } from '../../../../util/form.util';
import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces'; import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces';
import { ActivityType } from './types/activity-type.type';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -178,9 +179,11 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
}; };
}) ?? []; }) ?? [];
Object.keys(Type).forEach((type) => { for (const type of Object.keys(ActivityType)) {
this.typesTranslationMap[Type[type]] = translate(Type[type]); this.typesTranslationMap[ActivityType[type]] = translate(
}); ActivityType[type]
);
}
this.activityForm = this.formBuilder.group({ this.activityForm = this.formBuilder.group({
accountId: [ accountId: [
@ -242,7 +245,9 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
) )
.subscribe(async () => { .subscribe(async () => {
if ( if (
['BUY', 'FEE', 'ITEM'].includes(this.activityForm.get('type').value) ['BUY', 'FEE', 'VALUABLE'].includes(
this.activityForm.get('type').value
)
) { ) {
this.total = this.total =
this.activityForm.get('quantity').value * this.activityForm.get('quantity').value *
@ -261,7 +266,7 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm.get('accountId').valueChanges.subscribe((accountId) => { this.activityForm.get('accountId').valueChanges.subscribe((accountId) => {
const type = this.activityForm.get('type').value; const type = this.activityForm.get('type').value;
if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(type)) { if (['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(type)) {
const currency = const currency =
this.data.accounts.find(({ id }) => { this.data.accounts.find(({ id }) => {
return id === accountId; return id === accountId;
@ -357,9 +362,9 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm this.activityForm
.get('type') .get('type')
.valueChanges.pipe(takeUntil(this.unsubscribeSubject)) .valueChanges.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((type: Type) => { .subscribe((type: ActivityType) => {
if ( if (
type === 'ITEM' || type === 'VALUABLE' ||
(this.activityForm.get('dataSource').value === 'MANUAL' && (this.activityForm.get('dataSource').value === 'MANUAL' &&
type === 'BUY') type === 'BUY')
) { ) {
@ -384,7 +389,7 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm.get('name').setValidators(Validators.required); this.activityForm.get('name').setValidators(Validators.required);
this.activityForm.get('name').updateValueAndValidity(); this.activityForm.get('name').updateValueAndValidity();
if (type === 'ITEM') { if (type === 'VALUABLE') {
this.activityForm.get('quantity').setValue(1); this.activityForm.get('quantity').setValue(1);
} }
@ -513,11 +518,14 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
currency: this.activityForm.get('currency').value, currency: this.activityForm.get('currency').value,
customCurrency: this.activityForm.get('currencyOfUnitPrice').value, customCurrency: this.activityForm.get('currencyOfUnitPrice').value,
date: this.activityForm.get('date').value, date: this.activityForm.get('date').value,
dataSource: this.activityForm.get('dataSource').value, dataSource:
this.activityForm.get('type').value === 'VALUABLE'
? 'MANUAL'
: this.activityForm.get('dataSource').value,
fee: this.activityForm.get('fee').value, fee: this.activityForm.get('fee').value,
quantity: this.activityForm.get('quantity').value, quantity: this.activityForm.get('quantity').value,
symbol: symbol:
(['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes( (['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(
this.activityForm.get('type').value this.activityForm.get('type').value
) )
? undefined ? undefined
@ -526,7 +534,10 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
tags: this.activityForm.get('tags').value?.map(({ id }) => { tags: this.activityForm.get('tags').value?.map(({ id }) => {
return id; return id;
}), }),
type: this.activityForm.get('type').value, type:
this.activityForm.get('type').value === 'VALUABLE'
? 'BUY'
: this.activityForm.get('type').value,
unitPrice: this.activityForm.get('unitPrice').value unitPrice: this.activityForm.get('unitPrice').value
}; };
@ -543,12 +554,6 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
object: activity object: activity
}); });
if (activity.type === 'ITEM') {
// Transform deprecated type ITEM
activity.dataSource = 'MANUAL';
activity.type = 'BUY';
}
this.dialogRef.close(activity); this.dialogRef.close(activity);
} else { } else {
(activity as UpdateOrderDto).id = this.data.activity?.id; (activity as UpdateOrderDto).id = this.data.activity?.id;
@ -560,12 +565,6 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
object: activity as UpdateOrderDto object: activity as UpdateOrderDto
}); });
if (activity.type === 'ITEM') {
// Transform deprecated type ITEM
activity.dataSource = 'MANUAL';
activity.type = 'BUY';
}
this.dialogRef.close(activity as UpdateOrderDto); this.dialogRef.close(activity as UpdateOrderDto);
} }
} catch (error) { } catch (error) {

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

@ -65,9 +65,9 @@
>Stocks, ETFs, bonds, cryptocurrencies, commodities</small >Stocks, ETFs, bonds, cryptocurrencies, commodities</small
> >
</mat-option> </mat-option>
<mat-option value="ITEM"> <mat-option value="VALUABLE">
<span <span
><b>{{ typesTranslationMap['ITEM'] }}</b></span ><b>{{ typesTranslationMap['VALUABLE'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small class="d-block line-height-1 text-muted text-nowrap" i18n
>Luxury items, real estate, private companies</small >Luxury items, real estate, private companies</small

8
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts

@ -0,0 +1,8 @@
import { Type } from '@prisma/client';
export const ActivityType = {
...Type,
VALUABLE: 'VALUABLE'
} as const;
export type ActivityType = (typeof ActivityType)[keyof typeof ActivityType];

2
libs/ui/src/lib/i18n.ts

@ -38,9 +38,9 @@ const locales = {
DIVIDEND: $localize`Dividend`, DIVIDEND: $localize`Dividend`,
FEE: $localize`Fee`, FEE: $localize`Fee`,
INTEREST: $localize`Interest`, INTEREST: $localize`Interest`,
ITEM: $localize`Valuable`,
LIABILITY: $localize`Liability`, LIABILITY: $localize`Liability`,
SELL: $localize`Sell`, SELL: $localize`Sell`,
VALUABLE: $localize`Valuable`,
// AssetClass (enum) // AssetClass (enum)
ALTERNATIVE_INVESTMENT: $localize`Alternative Investment`, ALTERNATIVE_INVESTMENT: $localize`Alternative Investment`,

Loading…
Cancel
Save