diff --git a/CHANGELOG.md b/CHANGELOG.md index da75dde40..808ee3e2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Extended the watchlist endpoint by 50-Day and 200-Day trends (experimental) + ### Changed - Randomized the minutes of the hourly data gathering cron job diff --git a/apps/api/src/app/endpoints/watchlist/watchlist.service.ts b/apps/api/src/app/endpoints/watchlist/watchlist.service.ts index 36a498e1d..666023dbf 100644 --- a/apps/api/src/app/endpoints/watchlist/watchlist.service.ts +++ b/apps/api/src/app/endpoints/watchlist/watchlist.service.ts @@ -116,10 +116,13 @@ export class WatchlistService { return profile.dataSource === dataSource && profile.symbol === symbol; }); - const allTimeHigh = await this.marketDataService.getMax({ - dataSource, - symbol - }); + const [allTimeHigh, trends] = await Promise.all([ + this.marketDataService.getMax({ + dataSource, + symbol + }), + this.benchmarkService.getBenchmarkTrends({ dataSource, symbol }) + ]); const performancePercent = this.benchmarkService.calculateChangeInPercentage( @@ -138,7 +141,9 @@ export class WatchlistService { performancePercent, date: allTimeHigh?.date } - } + }, + trend50d: trends.trend50d, + trend200d: trends.trend200d }; }) ); diff --git a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts index ccb1664f1..226d748cd 100644 --- a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts +++ b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts @@ -7,7 +7,6 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { BenchmarkTrend } from '@ghostfolio/common/types'; import { GfBenchmarkComponent } from '@ghostfolio/ui/benchmark'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; @@ -137,17 +136,7 @@ export class HomeWatchlistComponent implements OnDestroy, OnInit { .fetchWatchlist() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ watchlist }) => { - this.watchlist = watchlist.map( - ({ dataSource, marketCondition, name, performances, symbol }) => ({ - dataSource, - marketCondition, - name, - performances, - symbol, - trend50d: 'UNKNOWN' as BenchmarkTrend, - trend200d: 'UNKNOWN' as BenchmarkTrend - }) - ); + this.watchlist = watchlist; this.changeDetectorRef.markForCheck(); }); diff --git a/libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts b/libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts index 6994d73f7..21570a459 100644 --- a/libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts @@ -8,5 +8,7 @@ export interface WatchlistResponse { marketCondition: Benchmark['marketCondition']; name: string; performances: Benchmark['performances']; + trend50d: Benchmark['trend50d']; + trend200d: Benchmark['trend200d']; })[]; }