From 0fd3db32280b34f67417e17839c05afb928de214 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:23:23 +0200 Subject: [PATCH] Bugfix/fix cash position rows in holdings table (#2237) * Fix cash position rows * Update changelog --- CHANGELOG.md | 1 + .../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 | 5 ++++- .../lib/holdings-table/holdings-table.component.scss | 6 ------ .../src/lib/holdings-table/holdings-table.component.ts | 2 +- 11 files changed, 26 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b989fb8..68043fe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed the rows with cash positions in the holdings table - Fixed an issue with the date parsing in the historical market data editor of the admin control panel ## 1.300.0 - 2023-08-11 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 6ea7b884..358fd161 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 00f7f112..844f04d9 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 11de2c84..f5b30ae2 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 ab632b2e..551f2066 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 30e91bc7..c4201a6c 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 3e769dda..82b4acca 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 76334ea0..0eebb297 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 29e3eeb1..e5d7d324 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -28,8 +28,11 @@ Name -
+
{{ element.name }} + ({{ element.assetSubClassLabel }})
{{ element.symbol }} diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.scss b/libs/ui/src/lib/holdings-table/holdings-table.component.scss index e96a64f6..a33b78af 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.scss +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.scss @@ -14,12 +14,6 @@ } } } - - .mat-mdc-row { - &.cursor-pointer { - cursor: pointer; - } - } } } } 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 e11cf69d..e341e21b 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -41,7 +41,7 @@ export class HoldingsTableComponent implements OnChanges, OnDestroy, OnInit { public dataSource: MatTableDataSource = new MatTableDataSource(); public displayedColumns = []; - public ignoreAssetSubClasses = [AssetClass.CASH.toString()]; + public ignoreAssetSubClasses = [AssetClass.CASH]; public isLoading = true; public routeQueryParams: Subscription;