diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e3d164bbf..bad7a2b567 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the style of the activity type filter on the activities page (experimental) +- Improved the style of the no activities info component - Improved the style of the selector in the benchmark comparator +- Improved the language localization for Chinese (`zh`) +- Improved the language localization for German (`de`) - Upgraded `bull-board` from version `9.5.0` to `9.8.0` - Upgraded `papaparse` from version `5.5.3` to `5.7.0` diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts index 7d95988c1f..48ab8f3218 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts @@ -3,6 +3,7 @@ import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.s import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { PortfolioSnapshotService } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service'; +import { SubscriptionType } from '@ghostfolio/common/enums'; import { Activity, Filter, @@ -35,6 +36,7 @@ export class PortfolioCalculatorFactory { currency, filters = [], usePortfolioSnapshotCache = true, + subscriptionType, userId }: { accountBalanceItems?: HistoricalDataItem[]; @@ -43,6 +45,7 @@ export class PortfolioCalculatorFactory { currency: string; filters?: Filter[]; usePortfolioSnapshotCache?: boolean; + subscriptionType?: SubscriptionType; userId: string; }): PortfolioCalculator { switch (calculationType) { @@ -53,6 +56,7 @@ export class PortfolioCalculatorFactory { currency, filters, usePortfolioSnapshotCache, + subscriptionType, userId, configurationService: this.configurationService, currentRateService: this.currentRateService, @@ -68,6 +72,7 @@ export class PortfolioCalculatorFactory { currency, filters, usePortfolioSnapshotCache, + subscriptionType, userId, configurationService: this.configurationService, currentRateService: this.currentRateService, @@ -83,6 +88,7 @@ export class PortfolioCalculatorFactory { currency, filters, usePortfolioSnapshotCache, + subscriptionType, userId, configurationService: this.configurationService, currentRateService: this.currentRateService, @@ -98,6 +104,7 @@ export class PortfolioCalculatorFactory { currency, filters, usePortfolioSnapshotCache, + subscriptionType, userId, configurationService: this.configurationService, currentRateService: this.currentRateService, diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index eb3d05a6ba..dfbe99c8de 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -20,6 +20,7 @@ import { PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE_PRIORITY_HIGH, PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE_PRIORITY_LOW } from '@ghostfolio/common/config'; +import { SubscriptionType } from '@ghostfolio/common/enums'; import { DATE_FORMAT, getAssetProfileIdentifier, @@ -89,6 +90,7 @@ export abstract class PortfolioCalculator { private snapshot: PortfolioSnapshot; private snapshotPromise: Promise; private startDate: Date; + private subscriptionType?: SubscriptionType; private transactionPoints: TransactionPoint[]; private usePortfolioSnapshotCache: boolean; private userId: string; @@ -104,6 +106,7 @@ export abstract class PortfolioCalculator { portfolioSnapshotService, redisCacheService, usePortfolioSnapshotCache = true, + subscriptionType, userId }: { accountBalanceItems: HistoricalDataItem[]; @@ -116,6 +119,7 @@ export abstract class PortfolioCalculator { portfolioSnapshotService: PortfolioSnapshotService; redisCacheService: RedisCacheService; usePortfolioSnapshotCache?: boolean; + subscriptionType?: SubscriptionType; userId: string; }) { this.accountBalanceItems = accountBalanceItems; @@ -179,6 +183,7 @@ export abstract class PortfolioCalculator { this.portfolioSnapshotService = portfolioSnapshotService; this.redisCacheService = redisCacheService; this.usePortfolioSnapshotCache = usePortfolioSnapshotCache; + this.subscriptionType = subscriptionType; this.userId = userId; const { endDate, startDate } = getIntervalFromDateRange({ @@ -286,7 +291,8 @@ export abstract class PortfolioCalculator { dateQuery: { gte: this.startDate, lt: this.endDate - } + }, + subscriptionType: this.subscriptionType }); this.dataProviderInfos = dataProviderInfos; diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts index a6bedc55d1..932a50c7e2 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-buy.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts index dc22cdbab5..4687fe4df0 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts index 9d55a79ddb..f054410ae3 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts index 9479352962..eeed8e957e 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts index 1143e3bd27..5c78f8a42b 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur-in-base-currency-eur.spec.ts @@ -81,7 +81,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts index e5b0d69d64..0e62bd0a38 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts @@ -69,7 +69,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index 50168468ac..c775e81be7 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -71,7 +71,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-before-first-market-price.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-before-first-market-price.spec.ts index cebb3de944..6b3d9ce6d4 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-before-first-market-price.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-before-first-market-price.spec.ts @@ -57,7 +57,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts index 93d91c500e..58dc545e49 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-short.spec.ts @@ -69,7 +69,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts index 1fa2d12641..4e7f693fc2 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts @@ -69,7 +69,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts index e50b132d24..3a49c91fcd 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts @@ -118,7 +118,6 @@ describe('PortfolioCalculator', () => { currentRateService = new CurrentRateService( null, dataProviderService, - null, null ); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts index 000cc59357..6e9a42e3e8 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts index 451973a9ff..8a2b1aec18 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts @@ -71,7 +71,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts index 2cc87934ae..ba2b7d05c6 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts @@ -72,7 +72,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts index 68572c63e1..370205fc98 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-manual-buy-before-first-market-price.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-manual-buy-before-first-market-price.spec.ts index 70b4016274..135e6f6407 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-manual-buy-before-first-market-price.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-manual-buy-before-first-market-price.spec.ts @@ -57,7 +57,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts index 53236f007f..228fdd542a 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-and-sell.spec.ts @@ -56,7 +56,8 @@ describe('PortfolioCalculator', () => { RedisCacheServiceMock.reset(); configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); + exchangeRateDataService = new ExchangeRateDataService( null, null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-from-two-data-sources.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-from-two-data-sources.spec.ts index 0aa3a4be3e..00b3ce4af1 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-from-two-data-sources.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-from-two-data-sources.spec.ts @@ -71,7 +71,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts index f6598f22b8..39994a8e58 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-activities.spec.ts index fb7a434771..f248114fe4 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-activities.spec.ts @@ -54,7 +54,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 8c3858dcd6..3f498ae4f1 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -72,7 +72,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts index f491b5025b..896cb6c991 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -72,7 +72,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts index c71a3bda11..e7e2371a4d 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts @@ -60,7 +60,8 @@ describe('RoaiPortfolioCalculator stock splits', () => { RedisCacheServiceMock.reset(); configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); + exchangeRateDataService = new ExchangeRateDataService( null, null, diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts index 3681bc7547..7326d551bb 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts @@ -59,7 +59,7 @@ describe('PortfolioCalculator', () => { configurationService = new ConfigurationService(); - currentRateService = new CurrentRateService(null, null, null, null); + currentRateService = new CurrentRateService(null, null, null); exchangeRateDataService = new ExchangeRateDataService( null, diff --git a/apps/api/src/app/portfolio/current-rate.service.spec.ts b/apps/api/src/app/portfolio/current-rate.service.spec.ts index ea93e8b4fe..4bb3a1b8cf 100644 --- a/apps/api/src/app/portfolio/current-rate.service.spec.ts +++ b/apps/api/src/app/portfolio/current-rate.service.spec.ts @@ -119,8 +119,7 @@ describe('CurrentRateService', () => { currentRateService = new CurrentRateService( null, dataProviderService, - marketDataService, - null + marketDataService ); }); diff --git a/apps/api/src/app/portfolio/current-rate.service.ts b/apps/api/src/app/portfolio/current-rate.service.ts index 9cfeda3bdc..66119a3c63 100644 --- a/apps/api/src/app/portfolio/current-rate.service.ts +++ b/apps/api/src/app/portfolio/current-rate.service.ts @@ -11,10 +11,8 @@ import { DataProviderInfo, ResponseError } from '@ghostfolio/common/interfaces'; -import type { RequestWithUser } from '@ghostfolio/common/types'; -import { Inject, Injectable } from '@nestjs/common'; -import { REQUEST } from '@nestjs/core'; +import { Injectable } from '@nestjs/common'; import { isBefore, isToday } from 'date-fns'; import { isEmpty, uniqBy } from 'lodash'; @@ -29,15 +27,14 @@ export class CurrentRateService { public constructor( private readonly activitiesService: ActivitiesService, private readonly dataProviderService: DataProviderService, - private readonly marketDataService: MarketDataService, - @Inject(REQUEST) private readonly request: RequestWithUser + private readonly marketDataService: MarketDataService ) {} @LogPerformance - // TODO: Pass user instead of using this.request.user public async getValues({ dataGatheringItems, - dateQuery + dateQuery, + subscriptionType }: GetValuesParams): Promise { const dataProviderInfos: DataProviderInfo[] = []; @@ -52,8 +49,8 @@ export class CurrentRateService { if (includesToday) { const quotes = await this.dataProviderService.getQuotes({ - items: dataGatheringItems, - user: this.request?.user + subscriptionType, + items: dataGatheringItems }); for (const { dataSource, symbol } of dataGatheringItems) { diff --git a/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts b/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts index ffb74ee9b2..e74c501be6 100644 --- a/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/get-values-params.interface.ts @@ -1,8 +1,10 @@ import { DataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; +import { SubscriptionType } from '@ghostfolio/common/enums'; import { DateQuery } from './date-query.interface'; export interface GetValuesParams { dataGatheringItems: DataGatheringItem[]; dateQuery: DateQuery; + subscriptionType?: SubscriptionType; } diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 60dab50329..fd941286c2 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -546,7 +546,8 @@ export class PortfolioService { filters, userId, calculationType: this.getUserPerformanceCalculationType(user), - currency: userCurrency + currency: userCurrency, + subscriptionType: user.subscription?.type }); const { historicalData } = await portfolioCalculator.getSnapshot(); @@ -633,7 +634,8 @@ export class PortfolioService { userId, calculationType: this.getUserPerformanceCalculationType(user), currency: userCurrency, - filters: portfolioSnapshotFilters + filters: portfolioSnapshotFilters, + subscriptionType: user.subscription?.type }); const { createdAt, currentValueInBaseCurrency, hasErrors, positions } = @@ -963,7 +965,8 @@ export class PortfolioService { calculationType: this.getUserPerformanceCalculationType(user), currency: userCurrency, filters: isExcludedHolding ? holdingFilters : undefined, - usePortfolioSnapshotCache: !isExcludedHolding + usePortfolioSnapshotCache: !isExcludedHolding, + subscriptionType: user.subscription?.type }); const transactionPoints = portfolioCalculator.getTransactionPoints(); @@ -1218,7 +1221,8 @@ export class PortfolioService { filters, userId, calculationType: this.getUserPerformanceCalculationType(user), - currency: userCurrency + currency: userCurrency, + subscriptionType: user.subscription?.type }); const { errors, hasErrors, historicalData } = 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 0417315d48..87c1e85c61 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -594,13 +594,13 @@ export class DataProviderService implements OnModuleInit { public async getQuotes({ items, requestTimeout, - useCache = true, - user + subscriptionType, + useCache = true }: { items: AssetProfileIdentifier[]; requestTimeout?: number; + subscriptionType?: SubscriptionType; useCache?: boolean; - user?: UserWithSettings; }): Promise<{ [assetProfileIdentifier: string]: DataProviderResponse; }> { @@ -687,7 +687,7 @@ export class DataProviderService implements OnModuleInit { } else if ( dataProvider.getDataProviderInfo().isPremium && this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && - user?.subscription?.type === SubscriptionType.Basic + subscriptionType === SubscriptionType.Basic ) { // Skip symbols of Premium data providers for users without subscription return false; diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 935e8b1de5..c46ea477e3 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -4103,7 +4103,7 @@ Add to Watchlist - Add to Watchlist + Zur Beobachtungsliste hinzufügen libs/common/src/lib/routes/routes.ts 163 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index d04fb0fd38..6a761c1a87 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -301,7 +301,7 @@ Any person who has the link can view the data. - Any person who has the link can view the data. + 任何拥有此链接的人都可以查看数据。 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 42 @@ -697,7 +697,7 @@ View and manage - View and manage + 查看与管理 libs/ui/src/lib/access-level-icon/access-level-icon.component.html 9 @@ -757,7 +757,7 @@ Splits - Splits + 拆股 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 519 @@ -933,7 +933,7 @@ Find quick answers to commonly asked questions about the fully managed Ghostfolio cloud offering in our Frequently Asked Questions (FAQ) section. - Find quick answers to commonly asked questions about the fully managed Ghostfolio cloud offering in our Frequently Asked Questions (FAQ) section. + 在我们的常见问题 (FAQ) 页面中查找关于完全托管的 Ghostfolio 云服务的常见问题快速解答。 apps/client/src/app/pages/faq/saas/saas-page.html 8 @@ -1337,7 +1337,7 @@ Update Account - Update Account + 更新账户 libs/common/src/lib/routes/routes.ts 120 @@ -1353,7 +1353,7 @@ Explore our guides to help you get started with investing and managing your finances. - Explore our guides to help you get started with investing and managing your finances. + 探索我们的指南,帮助您开启投资与财务管理之旅。 apps/client/src/app/pages/resources/overview/resources-overview.component.ts 21 @@ -1437,7 +1437,7 @@ Adjust the rules below and set custom thresholds to align with a personal investment strategy. - Adjust the rules below and set custom thresholds to align with a personal investment strategy. + 调整下方规则并设置自定义阈值,以贴合您的个人投资策略。 apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 12 @@ -1469,7 +1469,7 @@ Please select a date in the future. - Please select a date in the future. + 请选择一个未来的日期。 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 70 @@ -1477,7 +1477,7 @@ The data of this asset profile is moved to () and this asset profile is deleted. - The data of this asset profile is moved to () and this asset profile is deleted. + 此资产概况的数据已转移至 (),且该资产概况已被删除。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 961 @@ -1509,7 +1509,7 @@ Cache has been flushed. - Cache has been flushed. + 缓存已刷新。 apps/client/src/app/components/admin-overview/admin-overview.component.ts 281 @@ -1761,7 +1761,7 @@ Split Ratio - Split Ratio + 拆股比例 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 533 @@ -1793,7 +1793,7 @@ Last Used - Last Used + 上次使用 apps/client/src/app/components/access-table/access-table.component.html 31 @@ -1801,7 +1801,7 @@ An error occurred while merging this asset profile into (). - An error occurred while merging this asset profile into (). + 将此资产概况合并入 () 时发生错误。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 944 @@ -1969,7 +1969,7 @@ Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section. - Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section. + 在我们的常见问题 (FAQ) 页面中查找关于 Ghostfolio 的常见问题快速解答。 apps/client/src/app/pages/resources/overview/resources-overview.component.ts 16 @@ -2497,7 +2497,7 @@ Add Account - Add Account + 添加账户 libs/common/src/lib/routes/routes.ts 101 @@ -3521,7 +3521,7 @@ This action cannot be undone. - This action cannot be undone. + 此操作无法撤销。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 963 @@ -3589,7 +3589,7 @@ Alternative Investment - Alternative Investment + 另类投资 libs/ui/src/lib/i18n.ts 52 @@ -3597,7 +3597,7 @@ Commodity - Commodity + 大宗商品 libs/ui/src/lib/i18n.ts 53 @@ -3605,7 +3605,7 @@ Equity - Equity + 股权 libs/ui/src/lib/i18n.ts 54 @@ -3613,7 +3613,7 @@ Fixed Income - Fixed Income + 固定收益 libs/ui/src/lib/i18n.ts 55 @@ -3621,7 +3621,7 @@ Liquidity - Liquidity + 流动性 libs/ui/src/lib/i18n.ts 56 @@ -3629,7 +3629,7 @@ Real Estate - Real Estate + 房地产 libs/ui/src/lib/i18n.ts 57 @@ -3637,7 +3637,7 @@ Bond - Bond + 债券 libs/ui/src/lib/i18n.ts 60 @@ -3645,7 +3645,7 @@ Cash - Cash + 现金 libs/ui/src/lib/i18n.ts 61 @@ -3653,7 +3653,7 @@ Collectible - Collectible + 收藏品 libs/ui/src/lib/i18n.ts 62 @@ -3661,7 +3661,7 @@ Commodity - Commodity + 大宗商品 apps/client/src/app/pages/i18n/i18n-page.html 5 @@ -3669,7 +3669,7 @@ Cryptocurrency - Cryptocurrency + 加密货币 libs/ui/src/lib/i18n.ts 63 @@ -3677,7 +3677,7 @@ ETF - ETF + ETF libs/ui/src/lib/i18n.ts 64 @@ -3685,7 +3685,7 @@ Loan - Loan + 贷款 libs/ui/src/lib/i18n.ts 65 @@ -3693,7 +3693,7 @@ Mutual Fund - Mutual Fund + 共同基金 libs/ui/src/lib/i18n.ts 66 @@ -3701,7 +3701,7 @@ Precious Metal - Precious Metal + 贵金属 libs/ui/src/lib/i18n.ts 67 @@ -3709,7 +3709,7 @@ Private Equity - Private Equity + 私募股权 libs/ui/src/lib/i18n.ts 68 @@ -3717,7 +3717,7 @@ Stock - Stock + 股票 libs/ui/src/lib/i18n.ts 69 @@ -3865,7 +3865,7 @@ Learn key financial terms and concepts in our comprehensive glossary. - Learn key financial terms and concepts in our comprehensive glossary. + 在我们的全面词汇表中学习关键的财务术语和概念。 apps/client/src/app/pages/resources/overview/resources-overview.component.ts 31 @@ -3897,7 +3897,7 @@ Do you really want to delete these activities? - Do you really want to delete these activities? + 您确定要删除这 笔活动吗? libs/ui/src/lib/activities-table/activities-table.component.ts 327 @@ -4129,7 +4129,7 @@ Do you really want to merge this asset profile into it? - Do you really want to merge this asset profile into it? + 您确定要将此资产概况合并至其中吗? apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 967 @@ -4497,7 +4497,7 @@ Shares After - Shares After + 拆股后股数 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 591 @@ -4905,7 +4905,7 @@ Do you really want to remove this received access? - Do you really want to remove this received access? + 您确定要移除接收到的此访问权限吗? apps/client/src/app/components/access-table/access-table.component.ts 152 @@ -5242,7 +5242,7 @@ Expiration Date - Expiration Date + 到期日 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 54 @@ -5486,7 +5486,7 @@ Data gathering has been started. - Data gathering has been started. + 数据收集已开始。 apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 386 @@ -5746,7 +5746,7 @@ Add to Watchlist - Add to Watchlist + 添加到关注列表 libs/common/src/lib/routes/routes.ts 163 @@ -5786,7 +5786,7 @@ This asset profile cannot be merged into (). - This asset profile cannot be merged into (). + 无法将此资产概况合并到 ()。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 922 @@ -6134,7 +6134,7 @@ Export - Export + 导出 libs/ui/src/lib/activities-table/activities-table.component.html 72 @@ -6246,7 +6246,7 @@ Restricted view and manage - Restricted view and manage + 受限的查看与管理 libs/ui/src/lib/access-level-icon/access-level-icon.component.html 5 @@ -6302,7 +6302,7 @@ Find quick answers to commonly asked questions about self-hosting Ghostfolio in our Frequently Asked Questions (FAQ) section. - Find quick answers to commonly asked questions about self-hosting Ghostfolio in our Frequently Asked Questions (FAQ) section. + 在我们的常见问题 (FAQ) 页面中查找关于自托管 Ghostfolio 的常见问题快速解答。 apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html 8 @@ -6975,7 +6975,7 @@ Derived from the portfolio you are viewing - Derived from the portfolio you are viewing + 源自您正在查看的投资组合 apps/client/src/app/components/user-account-settings/user-account-settings.html 27 @@ -7115,7 +7115,7 @@ Ghostfolio X-ray uses static analysis to uncover potential issues and risks in the portfolio. - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in the portfolio. + Ghostfolio X-ray 使用静态分析来揭示投资组合中的潜在问题和风险。 apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 7 @@ -7195,7 +7195,7 @@ Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section. Discover what Ghostfolio is, explore its features, and learn about our privacy practices. Get all the information you need in one place. - Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section. Discover what Ghostfolio is, explore its features, and learn about our privacy practices. Get all the information you need in one place. + 在我们的常见问题 (FAQ) 页面中查找关于 Ghostfolio 的常见问题快速解答。了解什么是 Ghostfolio,探索其功能,并了解我们的隐私规范。一站式获取您所需的所有信息。 apps/client/src/app/pages/faq/overview/faq-overview-page.html 8 @@ -7635,7 +7635,7 @@ Shares Before - Shares Before + 拆股前股数 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 604 @@ -7877,7 +7877,7 @@ Access various market resources and tools to stay informed about financial markets. - Access various market resources and tools to stay informed about financial markets. + 访问各种市场资源和工具,随时了解金融市场动态。 apps/client/src/app/pages/resources/overview/resources-overview.component.ts 26 @@ -7925,7 +7925,7 @@ rules align with the portfolio. - 条规则与您的投资组合一致。 + 项规则符合投资组合。 apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 65 @@ -8157,7 +8157,7 @@ Oops! Could not remove the received access. - Oops! Could not remove the received access. + 哎呀!无法移除接收到的访问权限。 apps/client/src/app/components/user-account-access/user-account-access.component.ts 156 @@ -8241,7 +8241,7 @@ Additional requests are granted while you are setting up your instance - Additional requests are granted while you are setting up your instance + 在您配置实例期间已授予额外请求额度 apps/client/src/app/components/admin-settings/admin-settings.component.ts 88 @@ -8342,7 +8342,7 @@ () is already in use. - () 已在使用中。 + () 已被使用。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 965 @@ -8454,7 +8454,7 @@ {VAR_PLURAL, plural, =1 {Activity} other {Activities}} - {VAR_PLURAL, plural, =1 {Activity} other {Activities}} + {VAR_PLURAL, plural, =1 {活动} other {活动}} libs/ui/src/lib/activities-table/activities-table.component.html 73 @@ -8519,7 +8519,7 @@ Coverage - Coverage + 覆盖范围 apps/client/src/app/pages/i18n/i18n-page.html 147 @@ -8527,7 +8527,7 @@ The assets tagged as emergency fund exceed the emergency fund of ${emergencyFund} ${baseCurrency} - The assets tagged as emergency fund exceed the emergency fund of ${emergencyFund} ${baseCurrency} + 标记为应急基金的资产已超过设立的 ${emergencyFund} ${baseCurrency} 应急基金 apps/client/src/app/pages/i18n/i18n-page.html 149 @@ -8535,7 +8535,7 @@ The emergency fund of ${emergencyFund} ${baseCurrency} is not covered - The emergency fund of ${emergencyFund} ${baseCurrency} is not covered + ${emergencyFund} ${baseCurrency} 的应急基金尚未得到充分覆盖 apps/client/src/app/pages/i18n/i18n-page.html 153 @@ -8543,7 +8543,7 @@ No emergency fund amount has been set to determine the coverage - No emergency fund amount has been set to determine the coverage + 未设置应急基金金额,无法确定覆盖情况 apps/client/src/app/pages/i18n/i18n-page.html 157 @@ -8551,7 +8551,7 @@ The emergency fund of ${emergencyFund} ${baseCurrency} is covered - The emergency fund of ${emergencyFund} ${baseCurrency} is covered + ${emergencyFund} ${baseCurrency} 的应急基金已得到充分覆盖 apps/client/src/app/pages/i18n/i18n-page.html 160 @@ -8559,7 +8559,7 @@ Setup - 应急资金:设置 + 设置 apps/client/src/app/pages/i18n/i18n-page.html 163 @@ -8591,7 +8591,7 @@ The fees do exceed ${thresholdMax}% of the total investment volume (${feeRatio}%) - 费用已超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) + 费用已超过总投资额的 ${thresholdMax}%(当前为 ${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 172 @@ -8599,7 +8599,7 @@ The fees do not exceed ${thresholdMax}% of the total investment volume (${feeRatio}%) - 费用未超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) + 费用未超过总投资额的 ${thresholdMax}%(当前为 ${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 176 @@ -8647,7 +8647,7 @@ The net worth is managed by a single account - 您的净资产由单一账户管理 + 净资产由单个账户管理 apps/client/src/app/pages/i18n/i18n-page.html 32 @@ -8655,7 +8655,7 @@ The net worth is managed by ${accountsLength} accounts - 您的净资产由 ${accountsLength} 个账户管理 + 净资产由 ${accountsLength} 个账户管理 apps/client/src/app/pages/i18n/i18n-page.html 38 @@ -8781,7 +8781,7 @@ Over ${thresholdMax}% of the current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - 您当前投资中有超过 ${thresholdMax}% 的资金在 ${maxAccountName} (${maxInvestmentRatio}%) + 当前投资中有超过 ${thresholdMax}% 集中于 ${maxAccountName}(${maxInvestmentRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 19 @@ -8789,7 +8789,7 @@ The major part of the current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - 您的当前投资大部分位于 ${maxAccountName} (${maxInvestmentRatio}%) 且不超过 ${thresholdMax}% + 当前投资的主要部分位于 ${maxAccountName}(${maxInvestmentRatio}%),且未超过 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 26 @@ -8805,7 +8805,7 @@ The equity contribution of the current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - 您目前投资中股权占比 (${equityValueRatio}%) 超过了 ${thresholdMax}% + 股票类资产在当前投资中的占比(${equityValueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 45 @@ -8813,7 +8813,7 @@ The equity contribution of the current investment (${equityValueRatio}%) is below ${thresholdMin}% - 您目前投资中股权占比 (${equityValueRatio}%) 低于 ${thresholdMin}% + 股票类资产在当前投资中的占比(${equityValueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 49 @@ -8821,7 +8821,7 @@ The equity contribution of the current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 您目前投资中股权占比 (${equityValueRatio}%) 在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 股票类资产在当前投资中的占比(${equityValueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 53 @@ -8837,7 +8837,7 @@ The fixed income contribution of the current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - 您目前投资中固定收益占比 (${fixedIncomeValueRatio}%) 超过了 ${thresholdMax}% + 固定收益类资产在当前投资中的占比(${fixedIncomeValueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 59 @@ -8845,7 +8845,7 @@ The fixed income contribution of the current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - 您目前投资中固定收益占比 (${fixedIncomeValueRatio}%) 低于 ${thresholdMin}% + 固定收益类资产在当前投资中的占比(${fixedIncomeValueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 63 @@ -8853,7 +8853,7 @@ The fixed income contribution of the current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 您目前投资中固定收益占比 (${fixedIncomeValueRatio}%) 在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 固定收益类资产在当前投资中的占比(${fixedIncomeValueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 68 @@ -8869,7 +8869,7 @@ The major part of the current investment is not in the base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - 您的当前投资的主要部分未以您的基础货币计价 ( ${baseCurrency} 仅占 ${baseCurrencyValueRatio}%) + 当前投资的主要部分未以基础货币计价(${baseCurrency} 占比为 ${baseCurrencyValueRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 90 @@ -8877,7 +8877,7 @@ The major part of the current investment is in the base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - 您的当前投资的主要部分以您的基础货币计价(其中 ${baseCurrency} 占比 ${baseCurrencyValueRatio}%) + 当前投资的主要部分以基础货币计价(${baseCurrency} 占比为 ${baseCurrencyValueRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 94 @@ -8893,7 +8893,7 @@ Over ${thresholdMax}% of the current investment is in ${currency} (${maxValueRatio}%) - 超过 ${thresholdMax}% 的当前投资在 ${currency} 中(占比 ${maxValueRatio}%) + 当前投资中有超过 ${thresholdMax}% 以 ${currency} 计价(${maxValueRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 99 @@ -8901,7 +8901,7 @@ The major part of the current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - 您的当前投资的主要部分以 ${currency} 计价(占比 ${maxValueRatio}%),并且未超过 ${thresholdMax}% + 当前投资的主要部分以 ${currency} 计价(${maxValueRatio}%),且未超过 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 103 @@ -9054,7 +9054,7 @@ The buying power is below ${thresholdMin} ${baseCurrency} - 您的购买力低于 ${thresholdMin} ${baseCurrency} + 购买力低于 ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 75 @@ -9062,7 +9062,7 @@ The buying power is 0 ${baseCurrency} - 您的购买力为 0 ${baseCurrency} + 购买力为 0 ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 79 @@ -9070,7 +9070,7 @@ The buying power exceeds ${thresholdMin} ${baseCurrency} - 您的购买力超过了 ${thresholdMin} ${baseCurrency} + 购买力超过 ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 82 @@ -9102,7 +9102,7 @@ The developed markets contribution of the current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}% - 发达市场对您的当前投资 (${developedMarketsValueRatio}%) 的贡献超过了 ${thresholdMax}% + 发达市场在当前投资中的占比(${developedMarketsValueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 114 @@ -9110,7 +9110,7 @@ The developed markets contribution of the current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}% - 发达市场对您的当前投资 (${developedMarketsValueRatio}%) 的贡献低于 ${thresholdMin}% + 发达市场在当前投资中的占比(${developedMarketsValueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 119 @@ -9118,7 +9118,7 @@ The developed markets contribution of the current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 发达市场对您的当前投资 (${developedMarketsValueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 发达市场在当前投资中的占比(${developedMarketsValueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 124 @@ -9134,7 +9134,7 @@ The emerging markets contribution of the current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}% - 新兴市场对您的当前投资 (${emergingMarketsValueRatio}%) 的贡献超过了 ${thresholdMax}% + 新兴市场在当前投资中的占比(${emergingMarketsValueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 132 @@ -9142,7 +9142,7 @@ The emerging markets contribution of the current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}% - 新兴市场对您的当前投资 (${emergingMarketsValueRatio}%) 的贡献低于 ${thresholdMin}% + 新兴市场在当前投资中的占比(${emergingMarketsValueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 137 @@ -9150,7 +9150,7 @@ The emerging markets contribution of the current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 新兴市场对您的当前投资 (${emergingMarketsValueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 新兴市场在当前投资中的占比(${emergingMarketsValueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 142 @@ -9166,7 +9166,7 @@ The net worth is managed by 0 accounts - 您的净资产由 0 个帐户管理 + 净资产由 0 个账户管理 apps/client/src/app/pages/i18n/i18n-page.html 35 @@ -9182,7 +9182,7 @@ The Asia-Pacific market contribution of the current investment (${valueRatio}%) exceeds ${thresholdMax}% - 亚太地区对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% + 亚太市场在当前投资中的占比(${valueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 185 @@ -9190,7 +9190,7 @@ The Asia-Pacific market contribution of the current investment (${valueRatio}%) is below ${thresholdMin}% - 亚太地区对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% + 亚太市场在当前投资中的占比(${valueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 189 @@ -9198,7 +9198,7 @@ The Asia-Pacific market contribution of the current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 亚太地区对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 亚太市场在当前投资中的占比(${valueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 193 @@ -9214,7 +9214,7 @@ The Emerging Markets contribution of the current investment (${valueRatio}%) exceeds ${thresholdMax}% - 新兴市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% + 新兴市场在当前投资中的占比(${valueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 201 @@ -9222,7 +9222,7 @@ The Emerging Markets contribution of the current investment (${valueRatio}%) is below ${thresholdMin}% - 新兴市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% + 新兴市场在当前投资中的占比(${valueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 205 @@ -9230,7 +9230,7 @@ The Emerging Markets contribution of the current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 新兴市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 新兴市场在当前投资中的占比(${valueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 209 @@ -9246,7 +9246,7 @@ The Europe market contribution of the current investment (${valueRatio}%) exceeds ${thresholdMax}% - 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% + 欧洲市场在当前投资中的占比(${valueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 215 @@ -9254,7 +9254,7 @@ The Europe market contribution of the current investment (${valueRatio}%) is below ${thresholdMin}% - 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% + 欧洲市场在当前投资中的占比(${valueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 219 @@ -9262,7 +9262,7 @@ The Europe market contribution of the current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 欧洲市场在当前投资中的占比(${valueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 223 @@ -9278,7 +9278,7 @@ The Japan market contribution of the current investment (${valueRatio}%) exceeds ${thresholdMax}% - 日本市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% + 日本市场在当前投资中的占比(${valueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 229 @@ -9286,7 +9286,7 @@ The Japan market contribution of the current investment (${valueRatio}%) is below ${thresholdMin}% - 日本市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% + 日本市场在当前投资中的占比(${valueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 233 @@ -9294,7 +9294,7 @@ The Japan market contribution of the current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 日本市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 日本市场在当前投资中的占比(${valueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 237 @@ -9310,7 +9310,7 @@ The North America market contribution of the current investment (${valueRatio}%) exceeds ${thresholdMax}% - 北美市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% + 北美市场在当前投资中的占比(${valueRatio}%)超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 243 @@ -9318,7 +9318,7 @@ The North America market contribution of the current investment (${valueRatio}%) is below ${thresholdMin}% - 北美市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% + 北美市场在当前投资中的占比(${valueRatio}%)低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 247 @@ -9326,7 +9326,7 @@ The North America market contribution of the current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - 北美市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 + 北美市场在当前投资中的占比(${valueRatio}%)介于 ${thresholdMin}% 到 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html 251 @@ -9386,7 +9386,7 @@ Oops! Could not revoke the granted access. - Oops! Could not revoke the granted access. + 哎呀!无法撤销授予的访问权限。 apps/client/src/app/components/user-account-access/user-account-access.component.ts 135 diff --git a/libs/ui/src/lib/no-activities-info/no-activities-info.component.html b/libs/ui/src/lib/no-activities-info/no-activities-info.component.html index 3c7f9fd107..f9a174137c 100644 --- a/libs/ui/src/lib/no-activities-info/no-activities-info.component.html +++ b/libs/ui/src/lib/no-activities-info/no-activities-info.component.html @@ -2,12 +2,14 @@
- - Time to add your first activity. - +