Browse Source

Move to api/portfolio/chart

pull/428/head
Thomas 4 years ago
parent
commit
c2d2653f83
  1. 14
      apps/api/src/app/portfolio/portfolio.controller.ts
  2. 2
      apps/client/src/app/pages/home/home-page.component.ts
  3. 2
      apps/client/src/app/pages/zen/zen-page.component.ts
  4. 3
      apps/client/src/app/services/data.service.ts
  5. 2
      libs/common/src/lib/interfaces/index.ts
  6. 7
      libs/common/src/lib/interfaces/portfolio-chart.interface.ts
  7. 2
      libs/common/src/lib/interfaces/portfolio-performance.interface.ts

14
apps/api/src/app/portfolio/portfolio.controller.ts

@ -8,6 +8,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration.ser
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service';
import { baseCurrency } from '@ghostfolio/common/config'; import { baseCurrency } from '@ghostfolio/common/config';
import { import {
PortfolioChart,
PortfolioDetails, PortfolioDetails,
PortfolioPerformance, PortfolioPerformance,
PortfolioPublicDetails, PortfolioPublicDetails,
@ -32,10 +33,7 @@ import { AuthGuard } from '@nestjs/passport';
import { Response } from 'express'; import { Response } from 'express';
import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { import { PortfolioPositionDetail } from './interfaces/portfolio-position-detail.interface';
HistoricalDataItem,
PortfolioPositionDetail
} from './interfaces/portfolio-position-detail.interface';
import { PortfolioPositions } from './interfaces/portfolio-positions.interface'; import { PortfolioPositions } from './interfaces/portfolio-positions.interface';
import { PortfolioService } from './portfolio.service'; import { PortfolioService } from './portfolio.service';
@ -92,7 +90,7 @@ export class PortfolioController {
@Headers('impersonation-id') impersonationId, @Headers('impersonation-id') impersonationId,
@Query('range') range, @Query('range') range,
@Res() res: Response @Res() res: Response
): Promise<HistoricalDataItem[]> { ): Promise<PortfolioChart> {
let chartData = await this.portfolioService.getChart( let chartData = await this.portfolioService.getChart(
impersonationId, impersonationId,
range range
@ -130,7 +128,11 @@ export class PortfolioController {
}); });
} }
return <any>res.json(chartData); return <any>res.json({
isAllTimeHigh: true,
isAllTimeLow: false,
chart: chartData
});
} }
@Get('details') @Get('details')

2
apps/client/src/app/pages/home/home-page.component.ts

@ -166,7 +166,7 @@ export class HomePageComponent implements OnDestroy, OnInit {
.fetchChart({ range: this.dateRange }) .fetchChart({ range: this.dateRange })
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe((chartData) => { .subscribe((chartData) => {
this.historicalDataItems = chartData.map((chartDataItem) => { this.historicalDataItems = chartData.chart.map((chartDataItem) => {
return { return {
date: chartDataItem.date, date: chartDataItem.date,
value: chartDataItem.value value: chartDataItem.value

2
apps/client/src/app/pages/zen/zen-page.component.ts

@ -114,7 +114,7 @@ export class ZenPageComponent implements AfterViewInit, OnDestroy, OnInit {
.fetchChart({ range: this.dateRange }) .fetchChart({ range: this.dateRange })
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe((chartData) => { .subscribe((chartData) => {
this.historicalDataItems = chartData.map((chartDataItem) => { this.historicalDataItems = chartData.chart.map((chartDataItem) => {
return { return {
date: chartDataItem.date, date: chartDataItem.date,
value: chartDataItem.value value: chartDataItem.value

3
apps/client/src/app/services/data.service.ts

@ -21,6 +21,7 @@ import {
AdminData, AdminData,
Export, Export,
InfoItem, InfoItem,
PortfolioChart,
PortfolioDetails, PortfolioDetails,
PortfolioPerformance, PortfolioPerformance,
PortfolioPublicDetails, PortfolioPublicDetails,
@ -91,7 +92,7 @@ export class DataService {
} }
public fetchChart({ range }: { range: DateRange }) { public fetchChart({ range }: { range: DateRange }) {
return this.http.get<HistoricalDataItem[]>('/api/portfolio/chart', { return this.http.get<PortfolioChart>('/api/portfolio/chart', {
params: { range } params: { range }
}); });
} }

2
libs/common/src/lib/interfaces/index.ts

@ -3,6 +3,7 @@ import { Accounts } from './accounts.interface';
import { AdminData } from './admin-data.interface'; import { AdminData } from './admin-data.interface';
import { Export } from './export.interface'; import { Export } from './export.interface';
import { InfoItem } from './info-item.interface'; import { InfoItem } from './info-item.interface';
import { PortfolioChart } from './portfolio-chart.interface';
import { PortfolioDetails } from './portfolio-details.interface'; import { PortfolioDetails } from './portfolio-details.interface';
import { PortfolioItem } from './portfolio-item.interface'; import { PortfolioItem } from './portfolio-item.interface';
import { PortfolioOverview } from './portfolio-overview.interface'; import { PortfolioOverview } from './portfolio-overview.interface';
@ -24,6 +25,7 @@ export {
AdminData, AdminData,
Export, Export,
InfoItem, InfoItem,
PortfolioChart,
PortfolioDetails, PortfolioDetails,
PortfolioItem, PortfolioItem,
PortfolioOverview, PortfolioOverview,

7
libs/common/src/lib/interfaces/portfolio-chart.interface.ts

@ -0,0 +1,7 @@
import { HistoricalDataItem } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-position-detail.interface';
export interface PortfolioChart {
isAllTimeHigh: boolean;
isAllTimeLow: boolean;
chart: HistoricalDataItem[];
}

2
libs/common/src/lib/interfaces/portfolio-performance.interface.ts

@ -5,6 +5,4 @@ export interface PortfolioPerformance {
currentNetPerformance: number; currentNetPerformance: number;
currentNetPerformancePercent: number; currentNetPerformancePercent: number;
currentValue: number; currentValue: number;
isAllTimeHigh: boolean;
isAllTimeLow: boolean;
} }

Loading…
Cancel
Save