From c2a56cfd004942807082a522ae3eee2c697854ce Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:47:38 +0200 Subject: [PATCH] Refactoring --- .../components/home-summary/home-summary.component.ts | 2 +- .../allocations/allocations-page.component.ts | 10 +++++++++- .../pages/portfolio/allocations/allocations-page.html | 2 +- .../app/pages/portfolio/fire/fire-page.component.ts | 2 +- .../portfolio/holdings/holdings-page.component.ts | 6 +++++- apps/client/src/app/services/data.service.ts | 10 +--------- .../src/lib/interfaces/portfolio-position.interface.ts | 2 ++ .../lib/holdings-table/holdings-table.component.html | 2 +- .../src/lib/holdings-table/holdings-table.component.ts | 3 +-- 9 files changed, 22 insertions(+), 17 deletions(-) diff --git a/apps/client/src/app/components/home-summary/home-summary.component.ts b/apps/client/src/app/components/home-summary/home-summary.component.ts index 6ea7b8847..358fd1613 100644 --- a/apps/client/src/app/components/home-summary/home-summary.component.ts +++ b/apps/client/src/app/components/home-summary/home-summary.component.ts @@ -101,7 +101,7 @@ export class HomeSummaryComponent implements OnDestroy, OnInit { this.isLoading = true; this.dataService - .fetchPortfolioDetails({}) + .fetchPortfolioDetails() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ summary }) => { this.summary = summary; diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index 00f7f112d..844f04d9c 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -72,7 +72,13 @@ export class AllocationsPageComponent implements OnDestroy, OnInit { public positions: { [symbol: string]: Pick< PortfolioPosition, - 'assetClass' | 'assetSubClass' | 'currency' | 'exchange' | 'name' + | 'assetClass' + | 'assetClassLabel' + | 'assetSubClass' + | 'assetSubClassLabel' + | 'currency' + | 'exchange' + | 'name' > & { etfProvider: string; value: number }; }; public sectors: { @@ -341,7 +347,9 @@ export class AllocationsPageComponent implements OnDestroy, OnInit { this.positions[symbol] = { value, assetClass: position.assetClass, + assetClassLabel: translate(position.assetClass), assetSubClass: position.assetSubClass, + assetSubClassLabel: translate(position.assetSubClass), currency: position.currency, etfProvider: this.extractEtfProvider({ assetSubClass: position.assetSubClass, diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html index 11de2c84c..f5b30ae20 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html @@ -93,7 +93,7 @@ [baseCurrency]="user?.settings?.baseCurrency" [colorScheme]="user?.settings?.colorScheme" [isInPercent]="hasImpersonationId || user.settings.isRestrictedView" - [keys]="['assetClass', 'assetSubClass']" + [keys]="['assetClassLabel', 'assetSubClassLabel']" [locale]="user?.settings?.locale" [positions]="positions" > diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts index ab632b2e8..551f2066e 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts @@ -44,7 +44,7 @@ export class FirePageComponent implements OnDestroy, OnInit { this.deviceType = this.deviceService.getDeviceInfo().deviceType; this.dataService - .fetchPortfolioDetails({}) + .fetchPortfolioDetails() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ summary }) => { if (summary.cash === null || summary.currentValue === null) { diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts index 30e91bc7a..c4201a6ca 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -164,7 +164,11 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { for (const [symbol, position] of Object.entries( this.portfolioDetails.holdings )) { - this.positionsArray.push(position); + this.positionsArray.push({ + ...position, + assetClassLabel: translate(position.assetClass), + assetSubClassLabel: translate(position.assetSubClass) + }); } } diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 3e769dda6..82b4acca0 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -341,7 +341,7 @@ export class DataService { filters }: { filters?: Filter[]; - }): Observable { + } = {}): Observable { return this.http .get('/api/v1/portfolio/details', { params: this.buildFiltersAsQueryParams({ filters }) @@ -356,14 +356,6 @@ export class DataService { if (response.holdings) { for (const symbol of Object.keys(response.holdings)) { - response.holdings[symbol].assetClass = translate( - response.holdings[symbol].assetClass - ); - - response.holdings[symbol].assetSubClass = translate( - response.holdings[symbol].assetSubClass - ); - response.holdings[symbol].dateOfFirstActivity = response.holdings[ symbol ].dateOfFirstActivity diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts index 76334ea0b..0eebb2975 100644 --- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts @@ -7,7 +7,9 @@ import { Sector } from './sector.interface'; export interface PortfolioPosition { allocationInPercentage: number; assetClass?: AssetClass; + assetClassLabel?: string; assetSubClass?: AssetSubClass | 'CASH'; + assetSubClassLabel?: string; countries: Country[]; currency: string; dataSource: DataSource; diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.html b/libs/ui/src/lib/holdings-table/holdings-table.component.html index 8cca7258d..e5d7d3246 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -31,7 +31,7 @@
{{ element.name }} ({{ element.assetSubClass }})({{ element.assetSubClassLabel }})
diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.ts b/libs/ui/src/lib/holdings-table/holdings-table.component.ts index 8c3a2d62b..e341e21b2 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -14,7 +14,6 @@ import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { Router } from '@angular/router'; import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces'; -import { translate } from '@ghostfolio/ui/i18n'; import { AssetClass, Order as OrderModel } from '@prisma/client'; import { Subject, Subscription } from 'rxjs'; @@ -42,7 +41,7 @@ export class HoldingsTableComponent implements OnChanges, OnDestroy, OnInit { public dataSource: MatTableDataSource = new MatTableDataSource(); public displayedColumns = []; - public ignoreAssetSubClasses = [translate(AssetClass.CASH)]; + public ignoreAssetSubClasses = [AssetClass.CASH]; public isLoading = true; public routeQueryParams: Subscription;