diff --git a/CHANGELOG.md b/CHANGELOG.md index d21f20081..6873d9c67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the activities import for `csv` files exported by _Interactive Brokers_ - Improved the rendering of the chart ticks (`0.5K` → `500`) +- Increased the historical market data gathering of currency pairs to 10+ years - Improved the content of the Frequently Asked Questions (FAQ) page - Improved the content of the pricing page - Changed the `auth` endpoint of the login with _Security Token_ from `GET` to `POST` diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index f2fe18fc9..5b5eea63f 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -100,6 +100,7 @@ export class AdminService { dataSource, marketDataItemCount, symbol, + assetClass: 'CASH', countriesCount: 0, sectorsCount: 0 }; @@ -186,8 +187,11 @@ export class AdminService { ]); return { - assetProfile, - marketData + marketData, + assetProfile: assetProfile ?? { + symbol, + currency: '-' + } }; } diff --git a/apps/api/src/services/data-gathering.service.ts b/apps/api/src/services/data-gathering.service.ts index aef198e5b..62209846c 100644 --- a/apps/api/src/services/data-gathering.service.ts +++ b/apps/api/src/services/data-gathering.service.ts @@ -11,7 +11,7 @@ import { InjectQueue } from '@nestjs/bull'; import { Inject, Injectable, Logger } from '@nestjs/common'; import { DataSource } from '@prisma/client'; import { JobOptions, Queue } from 'bull'; -import { format, subDays } from 'date-fns'; +import { format, min, subDays, subYears } from 'date-fns'; import { DataProviderService } from './data-provider/data-provider.service'; import { DataEnhancerInterface } from './data-provider/interfaces/data-enhancer.interface'; @@ -236,7 +236,7 @@ export class DataGatheringService { return { dataSource, symbol, - date: startDate + date: min([startDate, subYears(new Date(), 10)]) }; }); diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 1fef72010..d97e909cb 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -14,6 +14,7 @@ import { import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { + AdminMarketDataDetails, EnhancedSymbolProfile, UniqueAsset } from '@ghostfolio/common/interfaces'; @@ -33,7 +34,7 @@ import { AssetProfileDialogParams } from './interfaces/interfaces'; }) export class AssetProfileDialog implements OnDestroy, OnInit { public assetClass: string; - public assetProfile: EnhancedSymbolProfile; + public assetProfile: AdminMarketDataDetails['assetProfile']; public assetProfileForm = this.formBuilder.group({ comment: '', symbolMapping: '' diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index a2365d240..2ad5354f6 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -24,7 +24,7 @@ import { translate } from '@ghostfolio/ui/i18n'; import { AssetClass, AssetSubClass, Tag, Type } from '@prisma/client'; import { isUUID } from 'class-validator'; import { isString } from 'lodash'; -import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs'; +import { EMPTY, Observable, Subject, lastValueFrom, of } from 'rxjs'; import { catchError, debounceTime, @@ -58,9 +58,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { public currencies: string[] = []; public currentMarketPrice = null; public defaultDateFormat: string; - public filteredLookupItems: LookupItem[]; - public filteredLookupItemsObservable: Observable; - public filteredTagsObservable: Observable; + public filteredLookupItems: LookupItem[] = []; + public filteredLookupItemsObservable: Observable = of([]); + public filteredTagsObservable: Observable = of([]); public isLoading = false; public platforms: { id: string; name: string }[]; public separatorKeysCodes: number[] = [ENTER, COMMA]; diff --git a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts index 71e0cdafb..441643f81 100644 --- a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts +++ b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts @@ -3,6 +3,6 @@ import { MarketData } from '@prisma/client'; import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; export interface AdminMarketDataDetails { - assetProfile: EnhancedSymbolProfile; + assetProfile: Partial; marketData: MarketData[]; }