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
- 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

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 { validateObjectForForm } from '../../../../util/form.util';
import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces';
import { ActivityType } from './types/activity-type.type';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -178,9 +179,11 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
};
}) ?? [];
Object.keys(Type).forEach((type) => {
this.typesTranslationMap[Type[type]] = translate(Type[type]);
});
for (const type of Object.keys(ActivityType)) {
this.typesTranslationMap[ActivityType[type]] = translate(
ActivityType[type]
);
}
this.activityForm = this.formBuilder.group({
accountId: [
@ -242,7 +245,9 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
)
.subscribe(async () => {
if (
['BUY', 'FEE', 'ITEM'].includes(this.activityForm.get('type').value)
['BUY', 'FEE', 'VALUABLE'].includes(
this.activityForm.get('type').value
)
) {
this.total =
this.activityForm.get('quantity').value *
@ -261,7 +266,7 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm.get('accountId').valueChanges.subscribe((accountId) => {
const type = this.activityForm.get('type').value;
if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(type)) {
if (['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(type)) {
const currency =
this.data.accounts.find(({ id }) => {
return id === accountId;
@ -357,9 +362,9 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm
.get('type')
.valueChanges.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((type: Type) => {
.subscribe((type: ActivityType) => {
if (
type === 'ITEM' ||
type === 'VALUABLE' ||
(this.activityForm.get('dataSource').value === 'MANUAL' &&
type === 'BUY')
) {
@ -384,7 +389,7 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm.get('name').setValidators(Validators.required);
this.activityForm.get('name').updateValueAndValidity();
if (type === 'ITEM') {
if (type === 'VALUABLE') {
this.activityForm.get('quantity').setValue(1);
}
@ -513,11 +518,14 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
currency: this.activityForm.get('currency').value,
customCurrency: this.activityForm.get('currencyOfUnitPrice').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,
quantity: this.activityForm.get('quantity').value,
symbol:
(['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(
(['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(
this.activityForm.get('type').value
)
? undefined
@ -526,7 +534,10 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
tags: this.activityForm.get('tags').value?.map(({ 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
};
@ -543,12 +554,6 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
object: activity
});
if (activity.type === 'ITEM') {
// Transform deprecated type ITEM
activity.dataSource = 'MANUAL';
activity.type = 'BUY';
}
this.dialogRef.close(activity);
} else {
(activity as UpdateOrderDto).id = this.data.activity?.id;
@ -560,12 +565,6 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
object: activity as UpdateOrderDto
});
if (activity.type === 'ITEM') {
// Transform deprecated type ITEM
activity.dataSource = 'MANUAL';
activity.type = 'BUY';
}
this.dialogRef.close(activity as UpdateOrderDto);
}
} 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
>
</mat-option>
<mat-option value="ITEM">
<mat-option value="VALUABLE">
<span
><b>{{ typesTranslationMap['ITEM'] }}</b></span
><b>{{ typesTranslationMap['VALUABLE'] }}</b></span
>
<small class="d-block line-height-1 text-muted text-nowrap" i18n
>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`,
FEE: $localize`Fee`,
INTEREST: $localize`Interest`,
ITEM: $localize`Valuable`,
LIABILITY: $localize`Liability`,
SELL: $localize`Sell`,
VALUABLE: $localize`Valuable`,
// AssetClass (enum)
ALTERNATIVE_INVESTMENT: $localize`Alternative Investment`,

Loading…
Cancel
Save