From c009f8c12f4052b8f0ad986d64129276b1583e68 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 1 Jun 2024 10:55:42 +0200 Subject: [PATCH] Feature/add data provider info to asset profile details dialog (#3434) * Add data provider info to asset profile details dialog * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/app/admin/admin.service.ts | 6 ++++++ .../alpha-vantage/alpha-vantage.service.ts | 4 +++- .../services/data-provider/data-provider.service.ts | 12 ++++++++---- .../eod-historical-data.service.ts | 4 +++- .../google-sheets/google-sheets.service.ts | 4 +++- .../data-provider/rapid-api/rapid-api.service.ts | 4 +++- .../yahoo-finance/yahoo-finance.service.ts | 4 +++- .../symbol-profile/symbol-profile.service.ts | 10 +++++++--- .../asset-profile-dialog/asset-profile-dialog.html | 11 +++++++++++ .../interfaces/enhanced-symbol-profile.interface.ts | 2 ++ 11 files changed, 53 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 855ecaa05..274071d21 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 + +- Added the data provider information to the asset profile details dialog of the admin control + ### Fixed - Fixed an issue with the initial annual interest rate in the _FIRE_ calculator diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 7df4498d7..9e4b6a6c6 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -313,6 +313,12 @@ export class AdminService { }) ]); + if (assetProfile) { + assetProfile.dataProviderInfo = this.dataProviderService + .getDataProvider(assetProfile.dataSource) + .getDataProviderInfo(); + } + return { marketData, assetProfile: assetProfile ?? { diff --git a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts index 08dc48e57..4e93bc757 100644 --- a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts +++ b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts @@ -50,7 +50,9 @@ export class AlphaVantageService implements DataProviderInterface { public getDataProviderInfo(): DataProviderInfo { return { - isPremium: false + isPremium: false, + name: 'Alpha Vantage', + url: 'https://www.alphavantage.co' }; } diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 26fc171b5..34067fa6f 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -598,10 +598,14 @@ export class DataProviderService { return name1?.toLowerCase().localeCompare(name2?.toLowerCase()); }) .map((lookupItem) => { - if ( - !this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') || - user.subscription.type === 'Premium' - ) { + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { + if (user.subscription.type === 'Premium') { + lookupItem.dataProviderInfo.isPremium = false; + } + + lookupItem.dataProviderInfo.name = undefined; + lookupItem.dataProviderInfo.url = undefined; + } else { lookupItem.dataProviderInfo.isPremium = false; } diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 1b6abd585..e16986cbb 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -66,7 +66,9 @@ export class EodHistoricalDataService implements DataProviderInterface { public getDataProviderInfo(): DataProviderInfo { return { - isPremium: true + isPremium: true, + name: 'EOD Historical Data', + url: 'https://eodhd.com' }; } diff --git a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts index 68e8bf732..c8ff87719 100644 --- a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts +++ b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts @@ -46,7 +46,9 @@ export class GoogleSheetsService implements DataProviderInterface { public getDataProviderInfo(): DataProviderInfo { return { - isPremium: false + isPremium: false, + name: 'Google Sheets', + url: 'https://docs.google.com/spreadsheets' }; } diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index e55fbd4e2..7e866552e 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -43,7 +43,9 @@ export class RapidApiService implements DataProviderInterface { public getDataProviderInfo(): DataProviderInfo { return { - isPremium: false + isPremium: false, + name: 'Rapid API', + url: 'https://rapidapi.com' }; } diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index c55da2597..e0d88f0c6 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -43,7 +43,9 @@ export class YahooFinanceService implements DataProviderInterface { public getDataProviderInfo(): DataProviderInfo { return { - isPremium: false + isPremium: false, + name: 'Yahoo Finance', + url: 'https://finance.yahoo.com' }; } diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 915b2f716..01901d4f3 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -61,7 +61,9 @@ export class SymbolProfileService { }) } }) - .then((symbolProfiles) => this.getSymbols(symbolProfiles)); + .then((symbolProfiles) => { + return this.enhanceSymbolProfiles(symbolProfiles); + }); } public async getSymbolProfilesByIds( @@ -83,7 +85,9 @@ export class SymbolProfileService { } } }) - .then((symbolProfiles) => this.getSymbols(symbolProfiles)); + .then((symbolProfiles) => { + return this.enhanceSymbolProfiles(symbolProfiles); + }); } public updateSymbolProfile({ @@ -119,7 +123,7 @@ export class SymbolProfileService { }); } - private getSymbols( + private enhanceSymbolProfiles( symbolProfiles: (SymbolProfile & { _count: { Order: number }; Order?: { diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index 4f01a933e..487794f66 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -115,11 +115,22 @@ >Symbol +