From 5eaaf86efbafc2d0151f3e6d625d739461e60a5f Mon Sep 17 00:00:00 2001 From: KenTandrian Date: Tue, 16 Jun 2026 22:16:46 +0700 Subject: [PATCH] feat(client): convert dateOfFirstActivity to Date --- .../holding-detail-dialog.component.ts | 10 +++++----- .../portfolio-holding-response.interface.ts | 2 +- .../historical-market-data-editor.component.ts | 6 +++--- libs/ui/src/lib/services/data.service.ts | 17 ++++++++++++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 7cbcbdd07..3f0ec9294 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -126,7 +126,7 @@ export class GfHoldingDetailDialogComponent implements OnInit { }; protected dataProviderInfo: DataProviderInfo; protected dataSource: MatTableDataSource; - protected dateOfFirstActivity: string; + protected dateOfFirstActivity: Date; protected dividendInBaseCurrency: number; protected dividendInBaseCurrencyPrecision = 2; protected dividendYieldPercentWithCurrencyEffect: number; @@ -452,16 +452,16 @@ export class GfHoldingDetailDialogComponent implements OnInit { } } - if (isToday(parseISO(this.dateOfFirstActivity))) { + if (isToday(this.dateOfFirstActivity)) { // Add average price this.historicalDataItems.push({ - date: this.dateOfFirstActivity, + date: this.dateOfFirstActivity.toISOString(), value: this.averagePrice }); // Add benchmark 1 this.benchmarkDataItems.push({ - date: this.dateOfFirstActivity, + date: this.dateOfFirstActivity.toISOString(), value: averagePrice }); @@ -492,7 +492,7 @@ export class GfHoldingDetailDialogComponent implements OnInit { if ( this.benchmarkDataItems[0]?.value === undefined && - isSameMonth(parseISO(this.dateOfFirstActivity), new Date()) + isSameMonth(this.dateOfFirstActivity, new Date()) ) { this.benchmarkDataItems[0].value = this.averagePrice; } diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index 76bc7dc02..e50037d3e 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -11,7 +11,7 @@ export interface PortfolioHoldingResponse { activitiesCount: number; averagePrice: number; dataProviderInfo: DataProviderInfo; - dateOfFirstActivity: string; + dateOfFirstActivity: Date; dividendInBaseCurrency: number; dividendYieldPercent: number; dividendYieldPercentWithCurrencyEffect: number; diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts index cde180dd9..f99c34b03 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts @@ -68,7 +68,7 @@ export class GfHistoricalMarketDataEditorComponent @Input() currency: string; @Input() dataSource: DataSource; - @Input() dateOfFirstActivity: string; + @Input() dateOfFirstActivity: Date; @Input() symbol: string; @Input() user: User; @@ -124,7 +124,7 @@ export class GfHistoricalMarketDataEditorComponent public ngOnChanges() { if (this.dateOfFirstActivity) { - let date = parseISO(this.dateOfFirstActivity); + let date = this.dateOfFirstActivity; const missingMarketData: { date: Date; marketPrice?: number }[] = []; @@ -174,7 +174,7 @@ export class GfHistoricalMarketDataEditorComponent const dates = Object.keys(this.marketDataByMonth).sort(); const startDateString = first(dates); const startDate = min([ - parseISO(this.dateOfFirstActivity), + this.dateOfFirstActivity, ...(startDateString ? [parseISO(startDateString)] : []) ]); const endDateString = last(dates); diff --git a/libs/ui/src/lib/services/data.service.ts b/libs/ui/src/lib/services/data.service.ts index 2ae07708d..9257c88eb 100644 --- a/libs/ui/src/lib/services/data.service.ts +++ b/libs/ui/src/lib/services/data.service.ts @@ -446,9 +446,20 @@ export class DataService { dataSource: DataSource; symbol: string; }) { - return this.http.get( - `/api/v1/portfolio/holding/${dataSource}/${symbol}` - ); + return this.http + .get( + `/api/v1/portfolio/holding/${dataSource}/${symbol}` + ) + .pipe( + map((response) => { + if (response.dateOfFirstActivity) { + response.dateOfFirstActivity = parseISO( + response.dateOfFirstActivity as unknown as string + ); + } + return response; + }) + ); } public fetchInfo(): InfoItem {