Browse Source

Refactor asset sub class EMERGENCY_FUND

pull/749/head
Thomas 3 years ago
parent
commit
c4e56ad849
  1. 20
      apps/api/src/app/portfolio/portfolio.service-new.ts
  2. 20
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 6
      apps/client/src/app/components/positions-table/positions-table.component.ts
  4. 2
      libs/common/src/lib/config.ts

20
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<PortfolioPosition>;
} = {};
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(

20
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<PortfolioPosition>;
} = {};
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()
};

6
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<PortfolioPosition> =
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;

2
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';

Loading…
Cancel
Save