diff --git a/apps/api/src/app/portfolio/portfolio.service-new.ts b/apps/api/src/app/portfolio/portfolio.service-new.ts index c8c71c207..85d94d314 100644 --- a/apps/api/src/app/portfolio/portfolio.service-new.ts +++ b/apps/api/src/app/portfolio/portfolio.service-new.ts @@ -20,13 +20,16 @@ import { ImpersonationService } from '@ghostfolio/api/services/impersonation.ser import { MarketState } from '@ghostfolio/api/services/interfaces/interfaces'; import { EnhancedSymbolProfile } from '@ghostfolio/api/services/interfaces/symbol-profile.interface'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service'; -import { UNKNOWN_KEY, baseCurrency } from '@ghostfolio/common/config'; +import { + ASSET_SUB_CLASS_EMERGENCY_FUND, + UNKNOWN_KEY, + baseCurrency +} from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { Accounts, PortfolioDetails, PortfolioPerformanceResponse, - PortfolioPosition, PortfolioReport, PortfolioSummary, Position, @@ -967,9 +970,7 @@ export class PortfolioServiceNew { value: Big; userCurrency: string; }) { - const cashPositions: { - [symbol: string]: Partial; - } = {}; + const cashPositions: PortfolioDetails['holdings'] = {}; for (const account of cashDetails.accounts) { const convertedBalance = this.exchangeRateDataService.toCurrency( @@ -993,6 +994,7 @@ export class PortfolioServiceNew { assetSubClass: AssetClass.CASH, countries: [], currency: account.currency, + dataSource: undefined, grossPerformance: 0, grossPerformancePercent: 0, investment: convertedBalance, @@ -1010,12 +1012,12 @@ export class PortfolioServiceNew { } } - cashPositions['EMERGENCY_FUND'] = { + cashPositions[ASSET_SUB_CLASS_EMERGENCY_FUND] = { ...cashPositions[userCurrency], - assetSubClass: 'EMERGENCY_FUND', + assetSubClass: ASSET_SUB_CLASS_EMERGENCY_FUND, investment: emergencyFund.toNumber(), - name: 'EMERGENCY_FUND', - symbol: 'EMERGENCY_FUND', + name: ASSET_SUB_CLASS_EMERGENCY_FUND, + symbol: ASSET_SUB_CLASS_EMERGENCY_FUND, value: emergencyFund.toNumber() }; cashPositions[userCurrency].investment = new Big( diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 6d87d0dc5..4ba2b5be1 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -21,13 +21,16 @@ import { ImpersonationService } from '@ghostfolio/api/services/impersonation.ser import { MarketState } from '@ghostfolio/api/services/interfaces/interfaces'; import { EnhancedSymbolProfile } from '@ghostfolio/api/services/interfaces/symbol-profile.interface'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service'; -import { UNKNOWN_KEY, baseCurrency } from '@ghostfolio/common/config'; +import { + UNKNOWN_KEY, + baseCurrency, + ASSET_SUB_CLASS_EMERGENCY_FUND +} from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { Accounts, PortfolioDetails, PortfolioPerformanceResponse, - PortfolioPosition, PortfolioReport, PortfolioSummary, Position, @@ -931,9 +934,7 @@ export class PortfolioService { userCurrency: string; value: Big; }) { - const cashPositions: { - [symbol: string]: Partial; - } = {}; + const cashPositions: PortfolioDetails['holdings'] = {}; for (const account of cashDetails.accounts) { const convertedBalance = this.exchangeRateDataService.toCurrency( @@ -957,6 +958,7 @@ export class PortfolioService { assetSubClass: AssetClass.CASH, countries: [], currency: account.currency, + dataSource: undefined, grossPerformance: 0, grossPerformancePercent: 0, investment: convertedBalance, @@ -974,12 +976,12 @@ export class PortfolioService { } } - cashPositions['EMERGENCY_FUND'] = { + cashPositions[ASSET_SUB_CLASS_EMERGENCY_FUND] = { ...cashPositions[userCurrency], - assetSubClass: 'EMERGENCY_FUND', + assetSubClass: ASSET_SUB_CLASS_EMERGENCY_FUND, investment: emergencyFund.toNumber(), - name: 'EMERGENCY_FUND', - symbol: 'EMERGENCY_FUND', + name: ASSET_SUB_CLASS_EMERGENCY_FUND, + symbol: ASSET_SUB_CLASS_EMERGENCY_FUND, value: emergencyFund.toNumber() }; diff --git a/apps/client/src/app/components/positions-table/positions-table.component.ts b/apps/client/src/app/components/positions-table/positions-table.component.ts index 8d1faf62a..ec40d9bf3 100644 --- a/apps/client/src/app/components/positions-table/positions-table.component.ts +++ b/apps/client/src/app/components/positions-table/positions-table.component.ts @@ -13,6 +13,7 @@ import { MatPaginator } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { Router } from '@angular/router'; +import { ASSET_SUB_CLASS_EMERGENCY_FUND } from '@ghostfolio/common/config'; import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces'; import { AssetClass, Order as OrderModel } from '@prisma/client'; import { Subject, Subscription } from 'rxjs'; @@ -39,7 +40,10 @@ export class PositionsTableComponent implements OnChanges, OnDestroy, OnInit { public dataSource: MatTableDataSource = new MatTableDataSource(); public displayedColumns = []; - public ignoreAssetSubClasses = [AssetClass.CASH.toString(), 'EMERGENCY_FUND']; + public ignoreAssetSubClasses = [ + AssetClass.CASH.toString(), + ASSET_SUB_CLASS_EMERGENCY_FUND + ]; public isLoading = true; public pageSize = 7; public routeQueryParams: Subscription; diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index a04736620..535fa2ef3 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -42,6 +42,8 @@ export const warnColorRgb = { b: 69 }; +export const ASSET_SUB_CLASS_EMERGENCY_FUND = 'EMERGENCY_FUND'; + export const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy'; export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy';