diff --git a/CHANGELOG.md b/CHANGELOG.md index e940bdb0f..78aef4d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,120 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Breaking Change**: The `sslmode=prefer` parameter in `DATABASE_URL` is no longer supported. Please update your environment variables (see `.env`) to use `sslmode=require` if _SSL_ is enabled or remove the `sslmode` parameter entirely if _SSL_ is not used. +## 2.245.0 - 2026-03-01 + +### Changed + +- Excluded the scraper configuration from the import and export functionality +- Excluded the symbol mapping from the import and export functionality +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for Italian (`it`) +- Improved the language localization for Spanish (`es`) + +### Fixed + +- Resolved the data source transformation in the errors of the performance endpoint +- Resolved the data source transformation in the export functionality + +## 2.244.0 - 2026-02-28 + +### Changed + +- Improved the usability of the asset profile details dialog in the admin control panel for currencies +- Removed the deprecated static portfolio analysis rule: _Fees_ (Fee Ratio) +- Refactored queries in the data provider service to use Prisma’s safe query methods + +### Fixed + +- Fixed an exception by adding a fallback for missing market price values on the _X-ray_ page + +## 2.243.0 - 2026-02-23 + +### Changed + +- Improved the language localization for Chinese (`zh`) +- Upgraded `nestjs` from version `11.1.8` to `11.1.14` + +### Fixed + +- Fixed an issue when creating activities of type `FEE`, `INTEREST` or `LIABILITY` + +## 2.242.0 - 2026-02-22 + +### Changed + +- Changed the account field to optional in the create or update activity dialog + +### Fixed + +- Fixed a validation issue for valuables used in the create and import activity logic +- Fixed the page size for presets in the historical market data table of the admin control panel + +## 2.241.0 - 2026-02-21 + +### Changed + +- Improved the usability of the portfolio summary tab on the home page in the _Presenter View_ +- Refreshed the cryptocurrencies list +- Improved the language localization for German (`de`) +- Improved the language localization for Spanish (`es`) + +### Fixed + +- Fixed an issue with `balanceInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode +- Fixed an issue with `comment` of the accounts in the value redaction interceptor for the impersonation mode +- Fixed an issue with `dividendInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode +- Fixed an issue with `interestInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode +- Fixed an issue with `value` of the accounts in the value redaction interceptor for the impersonation mode + +## 2.240.0 - 2026-02-18 + +### Added + +- Added a _No Activities_ preset to the historical market data table of the admin control panel +- Added support for custom cryptocurrencies defined in the database +- Added support for the cryptocurrency _Sky_ + +### Changed + +- Harmonized the validation for the create activity endpoint with the existing import activity logic +- Upgraded `marked` from version `17.0.1` to `17.0.2` +- Upgraded `ngx-markdown` from version `21.0.1` to `21.1.0` + +## 2.239.0 - 2026-02-15 + +### Added + +- Added a new static portfolio analysis rule based on the total investment volume: _Fees_ (Fee Ratio) +- Extended the content of the _Self-Hosting_ section on the Frequently Asked Questions (FAQ) page with information on derived currencies + +### Changed + +- Deprecated the existing static portfolio analysis rule: _Fees_ (Fee Ratio) +- Ignored nested ETFs when fetching top holdings for ETF and mutual fund assets from _Yahoo Finance_ +- Improved the scraper configuration with more detailed error messages +- Improved the language localization for German (`de`) +- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `13.1.0` to `13.2.2` +- Upgraded `cheerio` from version `1.0.0` to `1.2.0` + +### Fixed + +- Fixed the investment value by including currency effects in the portfolio summary tab on the home page +- Added the missing `valueInBaseCurrency` to the response of the import activities endpoint + +## 2.238.0 - 2026-02-12 + +### Changed + +- Upgraded `ngx-skeleton-loader` from version `11.3.0` to `12.0.0` +- Upgraded `twitter-api-v2` from version `1.27.0` to `1.29.0` + +### Fixed + +- Fixed a performance calculation issue by resetting tracking variables when a holding is fully closed +- Fixed an issue in the annualized performance calculation +- Fixed an issue with the exchange rate calculation by expanding the date range to cover the full day (start to end of day) + ## 2.237.0 - 2026-02-08 ### Changed diff --git a/README.md b/README.md index 8826b1f28..40d8c798a 100644 --- a/README.md +++ b/README.md @@ -318,8 +318,8 @@ If you like to support this project, become a [**Sponsor**](https://github.com/s ## Sponsors
- - TestMu AI Logo + + TestMu AI Logo
diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 24467c732..8a202a926 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -247,14 +247,17 @@ export class AdminController { @Param('symbol') symbol: string ): Promise<{ price: number }> { try { - const price = await this.manualService.test(data.scraperConfiguration); + const price = await this.manualService.test({ + symbol, + scraperConfiguration: data.scraperConfiguration + }); if (price) { return { price }; } throw new Error( - `Could not parse the current market price for ${symbol} (${dataSource})` + `Could not parse the market price for ${symbol} (${dataSource})` ); } catch (error) { Logger.error(error, 'AdminController'); diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 2cc8bbfb8..1f8745cd1 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -225,6 +225,10 @@ export class AdminService { presetId === 'ETF_WITHOUT_SECTORS' ) { filters = [{ id: 'ETF', type: 'ASSET_SUB_CLASS' }]; + } else if (presetId === 'NO_ACTIVITIES') { + where.activities = { + none: {} + }; } const searchQuery = filters.find(({ type }) => { @@ -466,7 +470,9 @@ export class AdminService { let currency: EnhancedSymbolProfile['currency'] = '-'; let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; - if (isCurrency(getCurrencyFromSymbol(symbol))) { + const isCurrencyAssetProfile = isCurrency(getCurrencyFromSymbol(symbol)); + + if (isCurrencyAssetProfile) { currency = getCurrencyFromSymbol(symbol); ({ activitiesCount, dateOfFirstActivity } = await this.orderService.getStatisticsByCurrency(currency)); @@ -504,6 +510,8 @@ export class AdminService { dataSource, dateOfFirstActivity, symbol, + assetClass: isCurrencyAssetProfile ? AssetClass.LIQUIDITY : undefined, + assetSubClass: isCurrencyAssetProfile ? AssetSubClass.CASH : undefined, isActive: true } }; diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index d07b199be..55f8d7dc9 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -182,10 +182,8 @@ export class ExportService { isActive, isin, name, - scraperConfiguration, sectors, symbol, - symbolMapping, url }) => { return { @@ -204,11 +202,8 @@ export class ExportService { isin, marketData: marketDataByAssetProfile[id], name, - scraperConfiguration: - scraperConfiguration as unknown as Prisma.JsonArray, sectors: sectors as unknown as Prisma.JsonArray, symbol, - symbolMapping, url }; } diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 7e8e333b9..497b8a7e9 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -3,8 +3,8 @@ import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { PlatformService } from '@ghostfolio/api/app/platform/platform.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; -import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; @@ -32,7 +32,7 @@ import { } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; -import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; +import { DataSource, Prisma } from '@prisma/client'; import { Big } from 'big.js'; import { endOfToday, isAfter, isSameSecond, parseISO } from 'date-fns'; import { omit, uniqBy } from 'lodash'; @@ -45,9 +45,9 @@ export class ImportService { public constructor( private readonly accountService: AccountService, private readonly apiService: ApiService, - private readonly configurationService: ConfigurationService, private readonly dataGatheringService: DataGatheringService, private readonly dataProviderService: DataProviderService, + private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, private readonly orderService: OrderService, private readonly platformService: PlatformService, @@ -393,7 +393,7 @@ export class ImportService { } } - const assetProfiles = await this.validateActivities({ + const assetProfiles = await this.dataProviderService.validateActivities({ activitiesDto, assetProfilesWithMarketDataDto, maxActivitiesToImport, @@ -590,10 +590,18 @@ export class ImportService { const value = new Big(quantity).mul(unitPrice).toNumber(); + const valueInBaseCurrency = this.exchangeRateDataService.toCurrencyAtDate( + value, + currency ?? assetProfile.currency, + userCurrency, + date + ); + activities.push({ ...order, error, value, + valueInBaseCurrency: await valueInBaseCurrency, // @ts-ignore SymbolProfile: assetProfile }); @@ -719,132 +727,4 @@ export class ImportService { return uniqueAccountIds.size === 1; } - - private async validateActivities({ - activitiesDto, - assetProfilesWithMarketDataDto, - maxActivitiesToImport, - user - }: { - activitiesDto: Partial[]; - assetProfilesWithMarketDataDto: ImportDataDto['assetProfiles']; - maxActivitiesToImport: number; - user: UserWithSettings; - }) { - if (activitiesDto?.length > maxActivitiesToImport) { - throw new Error(`Too many activities (${maxActivitiesToImport} at most)`); - } - - const assetProfiles: { - [assetProfileIdentifier: string]: Partial; - } = {}; - const dataSources = await this.dataProviderService.getDataSources(); - - for (const [ - index, - { currency, dataSource, symbol, type } - ] of activitiesDto.entries()) { - if (!dataSources.includes(dataSource)) { - throw new Error( - `activities.${index}.dataSource ("${dataSource}") is not valid` - ); - } - - if ( - this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && - user.subscription.type === 'Basic' - ) { - const dataProvider = this.dataProviderService.getDataProvider( - DataSource[dataSource] - ); - - if (dataProvider.getDataProviderInfo().isPremium) { - throw new Error( - `activities.${index}.dataSource ("${dataSource}") is not valid` - ); - } - } - - if (!assetProfiles[getAssetProfileIdentifier({ dataSource, symbol })]) { - if (['FEE', 'INTEREST', 'LIABILITY'].includes(type)) { - // Skip asset profile validation for FEE, INTEREST, and LIABILITY - // as these activity types don't require asset profiles - const assetProfileInImport = assetProfilesWithMarketDataDto?.find( - (profile) => { - return ( - profile.dataSource === dataSource && profile.symbol === symbol - ); - } - ); - - assetProfiles[getAssetProfileIdentifier({ dataSource, symbol })] = { - currency, - dataSource, - symbol, - name: assetProfileInImport?.name - }; - - continue; - } - - let assetProfile: Partial = { currency }; - - try { - assetProfile = ( - await this.dataProviderService.getAssetProfiles([ - { dataSource, symbol } - ]) - )?.[symbol]; - } catch {} - - if (!assetProfile?.name) { - const assetProfileInImport = assetProfilesWithMarketDataDto?.find( - (profile) => { - return ( - profile.dataSource === dataSource && profile.symbol === symbol - ); - } - ); - - if (assetProfileInImport) { - // Merge all fields of custom asset profiles into the validation object - Object.assign(assetProfile, { - assetClass: assetProfileInImport.assetClass, - assetSubClass: assetProfileInImport.assetSubClass, - comment: assetProfileInImport.comment, - countries: assetProfileInImport.countries, - currency: assetProfileInImport.currency, - cusip: assetProfileInImport.cusip, - dataSource: assetProfileInImport.dataSource, - figi: assetProfileInImport.figi, - figiComposite: assetProfileInImport.figiComposite, - figiShareClass: assetProfileInImport.figiShareClass, - holdings: assetProfileInImport.holdings, - isActive: assetProfileInImport.isActive, - isin: assetProfileInImport.isin, - name: assetProfileInImport.name, - scraperConfiguration: assetProfileInImport.scraperConfiguration, - sectors: assetProfileInImport.sectors, - symbol: assetProfileInImport.symbol, - symbolMapping: assetProfileInImport.symbolMapping, - url: assetProfileInImport.url - }); - } - } - - if (!['FEE', 'INTEREST', 'LIABILITY'].includes(type)) { - if (!assetProfile?.name) { - throw new Error( - `activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")` - ); - } - } - - assetProfiles[getAssetProfileIdentifier({ dataSource, symbol })] = - assetProfile; - } - } - - return assetProfiles; - } } diff --git a/apps/api/src/app/order/order.controller.ts b/apps/api/src/app/order/order.controller.ts index 73c295f1b..c7021809e 100644 --- a/apps/api/src/app/order/order.controller.ts +++ b/apps/api/src/app/order/order.controller.ts @@ -4,6 +4,7 @@ import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/ import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; +import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; @@ -46,6 +47,7 @@ import { OrderService } from './order.service'; export class OrderController { public constructor( private readonly apiService: ApiService, + private readonly dataProviderService: DataProviderService, private readonly dataGatheringService: DataGatheringService, private readonly impersonationService: ImpersonationService, private readonly orderService: OrderService, @@ -190,6 +192,29 @@ export class OrderController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(TransformDataSourceInRequestInterceptor) public async createOrder(@Body() data: CreateOrderDto): Promise { + try { + await this.dataProviderService.validateActivities({ + activitiesDto: [ + { + currency: data.currency, + dataSource: data.dataSource, + symbol: data.symbol, + type: data.type + } + ], + maxActivitiesToImport: 1, + user: this.request.user + }); + } catch (error) { + throw new HttpException( + { + error: getReasonPhrase(StatusCodes.BAD_REQUEST), + message: [error.message] + }, + StatusCodes.BAD_REQUEST + ); + } + const currency = data.currency; const customCurrency = data.customCurrency; const dataSource = data.dataSource; diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 2e58a4ef5..553cb8c90 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -53,6 +53,7 @@ import { isBefore, isWithinInterval, min, + startOfDay, startOfYear, subDays } from 'date-fns'; @@ -162,8 +163,8 @@ export abstract class PortfolioCalculator { subDays(dateOfFirstActivity, 1) ); - this.endDate = endDate; - this.startDate = startDate; + this.endDate = endOfDay(endDate); + this.startDate = startOfDay(startDate); this.computeTransactionPoints(); @@ -236,7 +237,7 @@ export abstract class PortfolioCalculator { const exchangeRatesByCurrency = await this.exchangeRateDataService.getExchangeRatesByCurrency({ currencies: Array.from(new Set(Object.values(currencies))), - endDate: endOfDay(this.endDate), + endDate: this.endDate, startDate: this.startDate, targetCurrency: this.currency }); 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 52c8489dd..9a93d0419 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 @@ -194,6 +194,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0.07032490039195362, netPerformanceInPercentageWithCurrencyEffect: 0.07032490039195362, netPerformanceWithCurrencyEffect: 33.4, + totalInvestment: 559, totalInvestmentValueWithCurrencyEffect: 559 }) ); 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 3998b081d..c876d0db1 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 @@ -208,6 +208,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: -0.05528341497550734703, netPerformanceInPercentageWithCurrencyEffect: -0.05528341497550734703, netPerformanceWithCurrencyEffect: -15.8, + totalInvestment: 0, totalInvestmentValueWithCurrencyEffect: 0 }) ); 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 acd0d0b2e..ae921d6d9 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 @@ -192,6 +192,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: -0.05528341497550734703, netPerformanceInPercentageWithCurrencyEffect: -0.05528341497550734703, netPerformanceWithCurrencyEffect: -15.8, + totalInvestment: 0, totalInvestmentValueWithCurrencyEffect: 0 }) ); 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 652e72db0..6207f1417 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 @@ -192,6 +192,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0.08437042459736457, netPerformanceInPercentageWithCurrencyEffect: 0.08437042459736457, netPerformanceWithCurrencyEffect: 23.05, + totalInvestment: 273.2, totalInvestmentValueWithCurrencyEffect: 273.2 }) ); 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 a70cc2986..11765fc49 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 @@ -210,6 +210,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 42.41983590271396609433, netPerformanceInPercentageWithCurrencyEffect: 41.64017412624815597854, netPerformanceWithCurrencyEffect: 26516.208701400000064086, + totalInvestment: 318.542667299999967957, totalInvestmentValueWithCurrencyEffect: 318.542667299999967957 }) ); 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 59a5531df..a3fbc0758 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 @@ -128,6 +128,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0, netPerformanceInPercentageWithCurrencyEffect: 0, netPerformanceWithCurrencyEffect: 0, + totalInvestment: 0, totalInvestmentValueWithCurrencyEffect: 0 }) ); 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 9b48a1324..122a9aaed 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 @@ -188,6 +188,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0.29544434470377019749, netPerformanceInPercentageWithCurrencyEffect: 0.24112962014285697628, netPerformanceWithCurrencyEffect: 19.851974, + totalInvestment: new Big('89.12').mul(0.8854).toNumber(), totalInvestmentValueWithCurrencyEffect: 82.329056 }) ); 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 new file mode 100644 index 000000000..d5b22e864 --- /dev/null +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-jnug-buy-and-sell-and-buy-and-sell.spec.ts @@ -0,0 +1,190 @@ +import { + activityDummyData, + loadExportFile, + symbolProfileDummyData, + userDummyData +} from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils'; +import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; +import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; +import { CurrentRateServiceMock } from '@ghostfolio/api/app/portfolio/current-rate.service.mock'; +import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; +import { RedisCacheServiceMock } from '@ghostfolio/api/app/redis-cache/redis-cache.service.mock'; +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 { PortfolioSnapshotServiceMock } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service.mock'; +import { parseDate } from '@ghostfolio/common/helper'; +import { Activity, ExportResponse } from '@ghostfolio/common/interfaces'; +import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type'; + +import { Big } from 'big.js'; +import { join } from 'node:path'; + +jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { + return { + CurrentRateService: jest.fn().mockImplementation(() => { + return CurrentRateServiceMock; + }) + }; +}); + +jest.mock( + '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service', + () => { + return { + PortfolioSnapshotService: jest.fn().mockImplementation(() => { + return PortfolioSnapshotServiceMock; + }) + }; + } +); + +jest.mock('@ghostfolio/api/app/redis-cache/redis-cache.service', () => { + return { + RedisCacheService: jest.fn().mockImplementation(() => { + return RedisCacheServiceMock; + }) + }; +}); + +describe('PortfolioCalculator', () => { + let exportResponse: ExportResponse; + + let configurationService: ConfigurationService; + let currentRateService: CurrentRateService; + let exchangeRateDataService: ExchangeRateDataService; + let portfolioCalculatorFactory: PortfolioCalculatorFactory; + let portfolioSnapshotService: PortfolioSnapshotService; + let redisCacheService: RedisCacheService; + + beforeAll(() => { + exportResponse = loadExportFile( + join( + __dirname, + '../../../../../../../test/import/ok/jnug-buy-and-sell-and-buy-and-sell.json' + ) + ); + }); + + beforeEach(() => { + configurationService = new ConfigurationService(); + + currentRateService = new CurrentRateService(null, null, null, null); + + exchangeRateDataService = new ExchangeRateDataService( + null, + null, + null, + null + ); + + portfolioSnapshotService = new PortfolioSnapshotService(null); + + redisCacheService = new RedisCacheService(null, null); + + portfolioCalculatorFactory = new PortfolioCalculatorFactory( + configurationService, + currentRateService, + exchangeRateDataService, + portfolioSnapshotService, + redisCacheService + ); + }); + + describe('get current positions', () => { + it.only('with JNUG buy and sell', async () => { + jest.useFakeTimers().setSystemTime(parseDate('2025-12-28').getTime()); + + const activities: Activity[] = exportResponse.activities.map( + (activity) => ({ + ...activityDummyData, + ...activity, + date: parseDate(activity.date), + feeInAssetProfileCurrency: activity.fee, + feeInBaseCurrency: activity.fee, + SymbolProfile: { + ...symbolProfileDummyData, + currency: activity.currency, + dataSource: activity.dataSource, + name: 'Direxion Daily Junior Gold Miners Index Bull 2X Shares', + symbol: activity.symbol + }, + unitPriceInAssetProfileCurrency: activity.unitPrice + }) + ); + + const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ + activities, + calculationType: PerformanceCalculationType.ROAI, + currency: exportResponse.user.settings.currency, + userId: userDummyData.id + }); + + const portfolioSnapshot = await portfolioCalculator.computeSnapshot(); + + const investments = portfolioCalculator.getInvestments(); + + const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ + data: portfolioSnapshot.historicalData, + groupBy: 'month' + }); + + const investmentsByYear = portfolioCalculator.getInvestmentsByGroup({ + data: portfolioSnapshot.historicalData, + groupBy: 'year' + }); + + expect(portfolioSnapshot).toMatchObject({ + currentValueInBaseCurrency: new Big('0'), + errors: [], + hasErrors: false, + positions: [ + { + activitiesCount: 4, + averagePrice: new Big('0'), + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: '2025-12-11', + dividend: new Big('0'), + dividendInBaseCurrency: new Big('0'), + fee: new Big('4'), + feeInBaseCurrency: new Big('4'), + grossPerformance: new Big('43.95'), // (1890.00 - 1885.05) + (2080.10 - 2041.10) + grossPerformanceWithCurrencyEffect: new Big('43.95'), // (1890.00 - 1885.05) + (2080.10 - 2041.10) + investment: new Big('0'), + investmentWithCurrencyEffect: new Big('0'), + netPerformance: new Big('39.95'), // (1890.00 - 1885.05) + (2080.10 - 2041.10) - 4 + netPerformanceWithCurrencyEffectMap: { + max: new Big('39.95') // (1890.00 - 1885.05) + (2080.10 - 2041.10) - 4 + }, + marketPrice: 237.8000030517578, + marketPriceInBaseCurrency: 237.8000030517578, + quantity: new Big('0'), + symbol: 'JNUG', + tags: [], + valueInBaseCurrency: new Big('0') + } + ], + totalFeesWithCurrencyEffect: new Big('4'), + totalInterestWithCurrencyEffect: new Big('0'), + totalInvestment: new Big('0'), + totalInvestmentWithCurrencyEffect: new Big('0'), + totalLiabilitiesWithCurrencyEffect: new Big('0') + }); + + expect(investments).toEqual([ + { date: '2025-12-11', investment: new Big('1885.05') }, + { date: '2025-12-18', investment: new Big('2041.1') }, + { date: '2025-12-28', investment: new Big('0') } + ]); + + expect(investmentsByMonth).toEqual([ + { date: '2025-12-01', investment: 0 } + ]); + + expect(investmentsByYear).toEqual([ + { date: '2025-01-01', investment: 0 } + ]); + }); + }); +}); 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 b19adb642..e7eff6682 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 @@ -174,6 +174,7 @@ describe('PortfolioCalculator', () => { expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( expect.objectContaining({ + totalInvestment: 298.58, totalInvestmentValueWithCurrencyEffect: 298.58 }) ); 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 fecf17011..3034e3a1f 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 @@ -190,6 +190,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0.12184460284330327256, netPerformanceInPercentageWithCurrencyEffect: 0.12184460284330327256, netPerformanceWithCurrencyEffect: 17.68, + totalInvestment: 75.8, totalInvestmentValueWithCurrencyEffect: 75.8 }) ); 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 adbb5c3ff..c79fdef58 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 @@ -241,6 +241,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0.13100263852242744063, netPerformanceInPercentageWithCurrencyEffect: 0.13100263852242744063, netPerformanceWithCurrencyEffect: 19.86, + totalInvestment: 0, totalInvestmentValueWithCurrencyEffect: 0 }) ); 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 6fc94622f..e518a5994 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 @@ -162,6 +162,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0, netPerformanceInPercentageWithCurrencyEffect: 0, netPerformanceWithCurrencyEffect: 0, + totalInvestment: 500000, totalInvestmentValueWithCurrencyEffect: 500000 }) ); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts index fe912510a..be69048df 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts @@ -626,6 +626,13 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { totalQuantityFromBuyTransactions ); + if (totalUnits.eq(0)) { + // Reset tracking variables when position is fully closed + totalInvestmentFromBuyTransactions = new Big(0); + totalInvestmentFromBuyTransactionsWithCurrencyEffect = new Big(0); + totalQuantityFromBuyTransactions = new Big(0); + } + if (PortfolioCalculator.ENABLE_LOGGING) { console.log( 'grossPerformanceFromSells', diff --git a/apps/api/src/app/portfolio/current-rate.service.mock.ts b/apps/api/src/app/portfolio/current-rate.service.mock.ts index 4b4b8f00e..8e027f971 100644 --- a/apps/api/src/app/portfolio/current-rate.service.mock.ts +++ b/apps/api/src/app/portfolio/current-rate.service.mock.ts @@ -64,6 +64,17 @@ function mockGetValue(symbol: string, date: Date) { return { marketPrice: 0 }; + case 'JNUG': + if (isSameDay(parseDate('2025-12-10'), date)) { + return { marketPrice: 204.5599975585938 }; + } else if (isSameDay(parseDate('2025-12-17'), date)) { + return { marketPrice: 203.9700012207031 }; + } else if (isSameDay(parseDate('2025-12-28'), date)) { + return { marketPrice: 237.8000030517578 }; + } + + return { marketPrice: 0 }; + case 'MSFT': if (isSameDay(parseDate('2021-09-16'), date)) { return { marketPrice: 89.12 }; diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index b8aefe0ac..5ed3c0009 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -206,6 +206,7 @@ export class PortfolioController { 'netPerformanceWithCurrencyEffect', 'totalBuy', 'totalInvestment', + 'totalInvestmentValueWithCurrencyEffect', 'totalSell', 'totalValueInBaseCurrency' ]); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 7be375473..17bd01ce4 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -13,7 +13,7 @@ import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rul import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/developed-markets'; import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; -import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; +import { FeeRatioTotalInvestmentVolume } from '@ghostfolio/api/models/rules/fees/fee-ratio-total-investment-volume'; import { BuyingPower } from '@ghostfolio/api/models/rules/liquidity/buying-power'; import { RegionalMarketClusterRiskAsiaPacific } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/asia-pacific'; import { RegionalMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/emerging-markets'; @@ -1007,7 +1007,8 @@ export class PortfolioService { netPerformancePercentage: 0, netPerformancePercentageWithCurrencyEffect: 0, netPerformanceWithCurrencyEffect: 0, - totalInvestment: 0 + totalInvestment: 0, + totalInvestmentValueWithCurrencyEffect: 0 } }; } @@ -1038,6 +1039,7 @@ export class PortfolioService { netPerformanceWithCurrencyEffect, netWorth, totalInvestment, + totalInvestmentValueWithCurrencyEffect, valueWithCurrencyEffect } = chart?.at(-1) ?? { netPerformance: 0, @@ -1058,6 +1060,7 @@ export class PortfolioService { netPerformance, netPerformanceWithCurrencyEffect, totalInvestment, + totalInvestmentValueWithCurrencyEffect, currentNetWorth: netWorth, currentValueInBaseCurrency: valueWithCurrencyEffect, netPerformancePercentage: netPerformanceInPercentage, @@ -1306,11 +1309,11 @@ export class PortfolioService { }), rules: await this.rulesService.evaluate( [ - new FeeRatioInitialInvestment( + new FeeRatioTotalInvestmentVolume( this.exchangeRateDataService, this.i18nService, userSettings.language, - summary.committedFunds, + summary.totalBuy + summary.totalSell, summary.fees ) ], @@ -1860,8 +1863,11 @@ export class PortfolioService { } } - const { currentValueInBaseCurrency, totalInvestment } = - await portfolioCalculator.getSnapshot(); + const { + currentValueInBaseCurrency, + totalInvestment, + totalInvestmentWithCurrencyEffect + } = await portfolioCalculator.getSnapshot(); const { performance } = await this.getPerformance({ impersonationId, @@ -2004,6 +2010,8 @@ export class PortfolioService { interestInBaseCurrency: interest.toNumber(), liabilitiesInBaseCurrency: liabilities.toNumber(), totalInvestment: totalInvestment.toNumber(), + totalInvestmentValueWithCurrencyEffect: + totalInvestmentWithCurrencyEffect.toNumber(), totalValueInBaseCurrency: netWorth }; } diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index def0b94d9..97ab8a59f 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -12,7 +12,7 @@ import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rul import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/developed-markets'; import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; -import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; +import { FeeRatioTotalInvestmentVolume } from '@ghostfolio/api/models/rules/fees/fee-ratio-total-investment-volume'; import { BuyingPower } from '@ghostfolio/api/models/rules/liquidity/buying-power'; import { RegionalMarketClusterRiskAsiaPacific } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/asia-pacific'; import { RegionalMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/emerging-markets'; @@ -376,7 +376,7 @@ export class UserService { undefined, undefined ).getSettings(user.settings.settings), - FeeRatioInitialInvestment: new FeeRatioInitialInvestment( + FeeRatioTotalInvestmentVolume: new FeeRatioTotalInvestmentVolume( undefined, undefined, undefined, diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index e456f6f1d..d00ded6ef 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -421,6 +421,7 @@ "AGS": "Aegis", "AGT": "Alaya Governance Token", "AGURI": "Aguri-Chan", + "AGUSTO": "Agusto", "AGV": "Astra Guild Ventures", "AGVC": "AgaveCoin", "AGVE": "Agave", @@ -662,6 +663,7 @@ "ALN": "Aluna", "ALNV1": "Aluna v1", "ALOHA": "Aloha", + "ALOKA": "ALOKA", "ALON": "Alon", "ALOR": "The Algorix", "ALOT": "Dexalot", @@ -708,6 +710,7 @@ "AMADEUS": "AMADEUS", "AMAL": "AMAL", "AMAPT": "Amnis Finance", + "AMARA": "AMARA", "AMATEN": "Amaten", "AMATO": "AMATO", "AMAZINGTEAM": "AmazingTeamDAO", @@ -1344,6 +1347,7 @@ "AZIT": "Azit", "AZNX": "AstraZeneca xStock", "AZR": "Azure", + "AZTEC": "AZTEC", "AZU": "Azultec", "AZUKI": "Azuki", "AZUKI2": "AZUKI 2.0", @@ -1373,6 +1377,7 @@ "BABI": "Babylons", "BABL": "Babylon Finance", "BABY": "Babylon", + "BABY4": "Baby 4", "BABYANDY": "Baby Andy", "BABYASTER": "Baby Aster", "BABYB": "Baby Bali", @@ -2342,6 +2347,7 @@ "BNPL": "BNPL Pay", "BNR": "BiNeuro", "BNRTX": "BnrtxCoin", + "BNRY": "Binary Coin", "BNS": "BNS token", "BNSAI": "bonsAI Network", "BNSD": "BNSD Finance", @@ -2526,9 +2532,10 @@ "BOSSCOQ": "THE COQFATHER", "BOST": "BoostCoin", "BOSU": "Bosu Inu", - "BOT": "Bot Planet", + "BOT": "HyperBot", "BOTC": "BotChain", "BOTIFY": "BOTIFY", + "BOTPLANET": "Bot Planet", "BOTS": "ArkDAO", "BOTTO": "Botto", "BOTX": "BOTXCOIN", @@ -3201,6 +3208,7 @@ "CATCO": "CatCoin", "CATCOIN": "CatCoin", "CATCOINETH": "Catcoin", + "CATCOINIO": "Catcoin", "CATCOINOFSOL": "Cat Coin", "CATCOINV2": "CatCoin Cash", "CATDOG": "Cat-Dog", @@ -3583,6 +3591,7 @@ "CIC": "Crazy Internet Coin", "CICHAIN": "CIChain", "CIF": "Crypto Improvement Fund", + "CIFRON": "Cipher Mining (Ondo Tokenized)", "CIG": "cig", "CIM": "COINCOME", "CIN": "CinderCoin", @@ -3718,6 +3727,7 @@ "CMPT": "Spatial Computing", "CMPV2": "Caduceus Protocol", "CMQ": "Communique", + "CMR": "U.S Critical Mineral Reserve", "CMS": "COMSA", "CMSN": "The Commission", "CMT": "CyberMiles", @@ -4630,6 +4640,7 @@ "DEFIL": "DeFIL", "DEFILAB": "Defi", "DEFISCALE": "DeFiScale", + "DEFISSI": "DEFI.ssi", "DEFIT": "Digital Fitness", "DEFLA": "Defla", "DEFLCT": "Deflect", @@ -6323,7 +6334,7 @@ "FIFTY": "FIFTYONEFIFTY", "FIG": "FlowCom", "FIGH": "FIGHT FIGHT FIGHT", - "FIGHT": "Fight to MAGA", + "FIGHT2MAGA": "Fight to MAGA", "FIGHTMAGA": "FIGHT MAGA", "FIGHTPEPE": "FIGHT PEPE", "FIGHTRUMP": "FIGHT TRUMP", @@ -8039,6 +8050,7 @@ "HONOR": "HonorLand", "HONX": "Honeywell xStock", "HOODOG": "Hoodog", + "HOODON": "Robinhood Markets (Ondo Tokenized)", "HOODRAT": "Hoodrat Coin", "HOODX": "Robinhood xStock", "HOOF": "Metaderby Hoof", @@ -8395,6 +8407,7 @@ "IMS": "Independent Money System", "IMST": "Imsmart", "IMT": "Immortal Token", + "IMU": "Immunefi", "IMUSIFY": "imusify", "IMVR": "ImmVRse", "IMX": "Immutable X", @@ -8750,6 +8763,7 @@ "JFIVE": "Jonny Five", "JFOX": "JuniperFox AI", "JFP": "JUSTICE FOR PEANUT", + "JGGL": "JGGL Token", "JGLP": "Jones GLP", "JGN": "Juggernaut", "JHH": "Jen-Hsun Huang", @@ -9891,7 +9905,7 @@ "LRN": "Loopring [NEO]", "LRT": "LandRocker", "LSC": "LS Coin", - "LSD": "Pontem Liquidswap", + "LSD": "LSD", "LSDOGE": "LSDoge", "LSETH": "Liquid Staked ETH", "LSHARE": "LSHARE", @@ -10167,8 +10181,7 @@ "MANUSAI": "Manus AI Agent", "MANYU": "Manyu", "MANYUDOG": "MANYU", - "MAO": "MAO", - "MAOMEME": "Mao", + "MAO": "Mao", "MAOW": "MAOW", "MAP": "MAP Protocol", "MAPC": "MapCoin", @@ -10631,6 +10644,7 @@ "MICRO": "Micro GPT", "MICRODOGE": "MicroDoge", "MICROMINES": "Micromines", + "MICROVISION": "MicroVisionChain", "MIDAI": "Midway AI", "MIDAS": "Midas", "MIDASDOLLAR": "Midas Dollar Share", @@ -13146,6 +13160,7 @@ "PONKE": "Ponke", "PONKEBNB": "Ponke BNB", "PONKEI": "Chinese Ponkei the Original", + "PONTEM": "Pontem Liquidswap", "PONYO": "Ponyo Impact", "PONZI": "Ponzi", "PONZIO": "Ponzio The Cat", @@ -13573,6 +13588,7 @@ "QNX": "QueenDex Coin", "QOBI": "Qobit", "QOM": "Shiba Predator", + "QONE": "QONE", "QOOB": "QOOBER", "QORA": "QoraCoin", "QORPO": "QORPO WORLD", @@ -15153,6 +15169,7 @@ "SNAP": "SnapEx", "SNAPCAT": "Snapcat", "SNAPKERO": "SNAP", + "SNAPON": "Snap (Ondo Tokenized)", "SNB": "SynchroBitcoin", "SNC": "SunContract", "SNCT": "SnakeCity", @@ -15380,7 +15397,7 @@ "SP8DE": "Sp8de", "SPA": "Sperax", "SPAC": "SPACE DOGE", - "SPACE": "MicroVisionChain", + "SPACE": "Spacecoin", "SPACECOIN": "SpaceCoin", "SPACED": "SPACE DRAGON", "SPACEHAMSTER": "Space Hamster", @@ -15868,6 +15885,7 @@ "SUPERCYCLE": "Crypto SuperCycle", "SUPERDAPP": "SuperDapp", "SUPERF": "SUPER FLOKI", + "SUPERFL": "Superfluid", "SUPERGROK": "SuperGrok", "SUPEROETHB": "Super OETH", "SUPERT": "Super Trump", @@ -16790,6 +16808,7 @@ "TSLAON": "Tesla (Ondo Tokenized)", "TSLAX": "Tesla xStock", "TSLT": "Tamkin", + "TSMON": "Taiwan Semiconductor Manufacturing (Ondo Tokenized)", "TSN": "Tsunami Exchange Token", "TSO": "Thesirion", "TSOTCHKE": "tsotchke", @@ -17181,8 +17200,10 @@ "USDL": "Lift Dollar", "USDM": "USDM", "USDMA": "USD mars", - "USDN": "Neutral AI", + "USDN": "Ultimate Synthetic Delta Neutral", + "USDNEUTRAL": "Neutral AI", "USDO": "USD Open Dollar", + "USDON": "U.S. Dollar Tokenized Currency (Ondo)", "USDP": "Pax Dollar", "USDPLUS": "Overnight.fi USD+", "USDQ": "Quantoz USDQ", @@ -17456,6 +17477,7 @@ "VIDZ": "PureVidz", "VIEW": "Viewly", "VIG": "TheVig", + "VIGI": "Vigi", "VIK": "VIKTAMA", "VIKITA": "VIKITA", "VIKKY": "VikkyToken", @@ -17513,6 +17535,7 @@ "VLC": "Volcano Uni", "VLDY": "Validity", "VLK": "Vulkania", + "VLR": "Velora", "VLS": "Veles", "VLT": "Veltor", "VLTC": "Venus LTC", @@ -17733,6 +17756,7 @@ "WANUSDT": "wanUSDT", "WAP": "Wet Ass Pussy", "WAR": "WAR", + "WARD": "Warden", "WARP": "WarpCoin", "WARPED": "Warped Games", "WARPIE": "Warpie", @@ -18494,6 +18518,7 @@ "XP": "Xphere", "XPA": "XPA", "XPARTY": "X Party", + "XPASS": "XPASS Token", "XPAT": "Bitnation Pangea", "XPAY": "Wallet Pay", "XPB": "Pebble Coin", @@ -18869,8 +18894,7 @@ "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", - "ZED": "ZED Token", - "ZEDCOIN": "ZedCoin", + "ZED": "ZedCoins", "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDX Сoin", @@ -19108,6 +19132,7 @@ "币安人生": "币安人生", "恶俗企鹅": "恶俗企鹅", "我踏马来了": "我踏马来了", + "狗屎": "狗屎", "老子": "老子", "雪球": "雪球", "黑马": "黑马" diff --git a/apps/api/src/assets/cryptocurrencies/custom.json b/apps/api/src/assets/cryptocurrencies/custom.json index 814aeec34..a26fc33df 100644 --- a/apps/api/src/assets/cryptocurrencies/custom.json +++ b/apps/api/src/assets/cryptocurrencies/custom.json @@ -4,6 +4,7 @@ "LUNA1": "Terra", "LUNA2": "Terra", "SGB1": "Songbird", + "SKY33038": "Sky", "SMURFCAT": "Real Smurf Cat", "TON11419": "Toncoin", "UNI1": "Uniswap", diff --git a/apps/api/src/helper/object.helper.spec.ts b/apps/api/src/helper/object.helper.spec.ts index ed821390f..eed261f3e 100644 --- a/apps/api/src/helper/object.helper.spec.ts +++ b/apps/api/src/helper/object.helper.spec.ts @@ -1554,6 +1554,7 @@ describe('redactAttributes', () => { items: null, liabilities: null, totalInvestment: null, + totalInvestmentValueWithCurrencyEffect: null, totalValueInBaseCurrency: null, currentNetWorth: null } @@ -3030,6 +3031,7 @@ describe('redactAttributes', () => { items: null, liabilities: null, totalInvestment: null, + totalInvestmentValueWithCurrencyEffect: null, totalValueInBaseCurrency: null, currentNetWorth: null } diff --git a/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts b/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts index eaa6dd08c..3cccd6efa 100644 --- a/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts +++ b/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts @@ -62,8 +62,10 @@ export class TransformDataSourceInResponseInterceptor< valueMap, object: data, paths: [ + 'activities[*].dataSource', 'activities[*].SymbolProfile.dataSource', 'benchmarks[*].dataSource', + 'errors[*].dataSource', 'fearAndGreedIndex.CRYPTOCURRENCIES.dataSource', 'fearAndGreedIndex.STOCKS.dataSource', 'holdings[*].dataSource', diff --git a/apps/api/src/models/rule.ts b/apps/api/src/models/rule.ts index 9c27e0018..622375b5b 100644 --- a/apps/api/src/models/rule.ts +++ b/apps/api/src/models/rule.ts @@ -57,7 +57,7 @@ export abstract class Rule implements RuleInterface { previousValue + this.exchangeRateDataService.toCurrency( new Big(currentValue.quantity) - .mul(currentValue.marketPrice) + .mul(currentValue.marketPrice ?? 0) .toNumber(), currentValue.currency, baseCurrency diff --git a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts b/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts similarity index 78% rename from apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts rename to apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts index cb85a73ba..07bf5fa2c 100644 --- a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts +++ b/apps/api/src/models/rules/fees/fee-ratio-total-investment-volume.ts @@ -3,35 +3,36 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { RuleSettings, UserSettings } from '@ghostfolio/common/interfaces'; -export class FeeRatioInitialInvestment extends Rule { +export class FeeRatioTotalInvestmentVolume extends Rule { private fees: number; - private totalInvestment: number; + private totalInvestmentVolumeInBaseCurrency: number; public constructor( protected exchangeRateDataService: ExchangeRateDataService, private i18nService: I18nService, languageCode: string, - totalInvestment: number, + totalInvestmentVolumeInBaseCurrency: number, fees: number ) { super(exchangeRateDataService, { languageCode, - key: FeeRatioInitialInvestment.name + key: FeeRatioTotalInvestmentVolume.name }); this.fees = fees; - this.totalInvestment = totalInvestment; + this.totalInvestmentVolumeInBaseCurrency = + totalInvestmentVolumeInBaseCurrency; } public evaluate(ruleSettings: Settings) { - const feeRatio = this.totalInvestment - ? this.fees / this.totalInvestment + const feeRatio = this.totalInvestmentVolumeInBaseCurrency + ? this.fees / this.totalInvestmentVolumeInBaseCurrency : 0; if (feeRatio > ruleSettings.thresholdMax) { return { evaluation: this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment.false', + id: 'rule.feeRatioTotalInvestmentVolume.false', languageCode: this.getLanguageCode(), placeholders: { feeRatio: (ruleSettings.thresholdMax * 100).toFixed(2), @@ -44,7 +45,7 @@ export class FeeRatioInitialInvestment extends Rule { return { evaluation: this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment.true', + id: 'rule.feeRatioTotalInvestmentVolume.true', languageCode: this.getLanguageCode(), placeholders: { feeRatio: (feeRatio * 100).toPrecision(3), @@ -76,7 +77,7 @@ export class FeeRatioInitialInvestment extends Rule { public getName() { return this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment', + id: 'rule.feeRatioTotalInvestmentVolume', languageCode: this.getLanguageCode() }); } diff --git a/apps/api/src/services/cryptocurrency/cryptocurrency.module.ts b/apps/api/src/services/cryptocurrency/cryptocurrency.module.ts index 8820205eb..e882f4da5 100644 --- a/apps/api/src/services/cryptocurrency/cryptocurrency.module.ts +++ b/apps/api/src/services/cryptocurrency/cryptocurrency.module.ts @@ -1,9 +1,12 @@ +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; + import { Module } from '@nestjs/common'; import { CryptocurrencyService } from './cryptocurrency.service'; @Module({ - providers: [CryptocurrencyService], - exports: [CryptocurrencyService] + exports: [CryptocurrencyService], + imports: [PropertyModule], + providers: [CryptocurrencyService] }) export class CryptocurrencyModule {} diff --git a/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts b/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts index b814fc186..933029ea2 100644 --- a/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts +++ b/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts @@ -1,31 +1,39 @@ -import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { + DEFAULT_CURRENCY, + PROPERTY_CUSTOM_CRYPTOCURRENCIES +} from '@ghostfolio/common/config'; -import { Injectable } from '@nestjs/common'; +import { Injectable, OnModuleInit } from '@nestjs/common'; const cryptocurrencies = require('../../assets/cryptocurrencies/cryptocurrencies.json'); const customCryptocurrencies = require('../../assets/cryptocurrencies/custom.json'); @Injectable() -export class CryptocurrencyService { +export class CryptocurrencyService implements OnModuleInit { private combinedCryptocurrencies: string[]; + public constructor(private readonly propertyService: PropertyService) {} + + public async onModuleInit() { + const customCryptocurrenciesFromDatabase = + await this.propertyService.getByKey>( + PROPERTY_CUSTOM_CRYPTOCURRENCIES + ); + + this.combinedCryptocurrencies = [ + ...Object.keys(cryptocurrencies), + ...Object.keys(customCryptocurrencies), + ...Object.keys(customCryptocurrenciesFromDatabase ?? {}) + ]; + } + public isCryptocurrency(aSymbol = '') { const cryptocurrencySymbol = aSymbol.substring(0, aSymbol.length - 3); return ( aSymbol.endsWith(DEFAULT_CURRENCY) && - this.getCryptocurrencies().includes(cryptocurrencySymbol) + this.combinedCryptocurrencies.includes(cryptocurrencySymbol) ); } - - private getCryptocurrencies() { - if (!this.combinedCryptocurrencies) { - this.combinedCryptocurrencies = [ - ...Object.keys(cryptocurrencies), - ...Object.keys(customCryptocurrencies) - ]; - } - - return this.combinedCryptocurrencies; - } } diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts index c37a9fe3e..9335d86d0 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts @@ -29,7 +29,7 @@ describe('YahooFinanceDataEnhancerService', () => { let yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService; beforeAll(async () => { - cryptocurrencyService = new CryptocurrencyService(); + cryptocurrencyService = new CryptocurrencyService(null); yahooFinanceDataEnhancerService = new YahooFinanceDataEnhancerService( cryptocurrencyService diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index c83e35503..72136dc04 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -207,14 +207,16 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { if (['ETF', 'MUTUALFUND'].includes(assetSubClass)) { response.holdings = - assetProfile.topHoldings?.holdings?.map( - ({ holdingName, holdingPercent }) => { + assetProfile.topHoldings?.holdings + ?.filter(({ holdingName }) => { + return !holdingName?.includes('ETF'); + }) + ?.map(({ holdingName, holdingPercent }) => { return { name: this.formatName({ longName: holdingName }), weight: holdingPercent }; - } - ) ?? []; + }) ?? []; response.sectors = ( assetProfile.topHoldings?.sectorWeightings ?? [] 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 5a088c0e4..a6b12cce2 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -1,3 +1,4 @@ +import { ImportDataDto } from '@ghostfolio/api/app/import/import-data.dto'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; @@ -10,8 +11,10 @@ import { PROPERTY_API_KEY_GHOSTFOLIO, PROPERTY_DATA_SOURCE_MAPPING } from '@ghostfolio/common/config'; +import { CreateOrderDto } from '@ghostfolio/common/dtos'; import { DATE_FORMAT, + getAssetProfileIdentifier, getCurrencyFromSymbol, getStartOfUtcDate, isCurrency, @@ -27,7 +30,7 @@ import { import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'; -import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; +import { DataSource, MarketData, Prisma, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { eachDayOfInterval, format, isValid } from 'date-fns'; import { groupBy, isEmpty, isNumber, uniqWith } from 'lodash'; @@ -185,6 +188,125 @@ export class DataProviderService implements OnModuleInit { return dataSources.sort(); } + public async validateActivities({ + activitiesDto, + assetProfilesWithMarketDataDto, + maxActivitiesToImport, + user + }: { + activitiesDto: Pick< + Partial, + 'currency' | 'dataSource' | 'symbol' | 'type' + >[]; + assetProfilesWithMarketDataDto?: ImportDataDto['assetProfiles']; + maxActivitiesToImport: number; + user: UserWithSettings; + }) { + if (activitiesDto?.length > maxActivitiesToImport) { + throw new Error(`Too many activities (${maxActivitiesToImport} at most)`); + } + + const assetProfiles: { + [assetProfileIdentifier: string]: Partial; + } = {}; + + const dataSources = await this.getDataSources(); + + for (const [ + index, + { currency, dataSource, symbol, type } + ] of activitiesDto.entries()) { + const activityPath = + maxActivitiesToImport === 1 ? 'activity' : `activities.${index}`; + + if (!dataSources.includes(dataSource)) { + throw new Error( + `${activityPath}.dataSource ("${dataSource}") is not valid` + ); + } + + if ( + this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && + user.subscription.type === 'Basic' + ) { + const dataProvider = this.getDataProvider(DataSource[dataSource]); + + if (dataProvider.getDataProviderInfo().isPremium) { + throw new Error( + `${activityPath}.dataSource ("${dataSource}") is not valid` + ); + } + } + + const assetProfileIdentifier = getAssetProfileIdentifier({ + dataSource, + symbol + }); + + if (!assetProfiles[assetProfileIdentifier]) { + if ( + (dataSource === DataSource.MANUAL && type === 'BUY') || + ['FEE', 'INTEREST', 'LIABILITY'].includes(type) + ) { + const assetProfileInImport = assetProfilesWithMarketDataDto?.find( + (assetProfile) => { + return ( + assetProfile.dataSource === dataSource && + assetProfile.symbol === symbol + ); + } + ); + + assetProfiles[assetProfileIdentifier] = { + currency, + dataSource, + symbol, + name: assetProfileInImport?.name ?? symbol + }; + + continue; + } + + let assetProfile: Partial = { currency }; + + try { + assetProfile = ( + await this.getAssetProfiles([ + { + dataSource, + symbol + } + ]) + )?.[symbol]; + } catch {} + + if (!assetProfile?.name) { + const assetProfileInImport = assetProfilesWithMarketDataDto?.find( + (profile) => { + return ( + profile.dataSource === dataSource && profile.symbol === symbol + ); + } + ); + + if (assetProfileInImport) { + Object.assign(assetProfile, assetProfileInImport); + } + } + + if (!assetProfile?.name) { + throw new Error( + `activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")` + ); + } + + assetProfiles[assetProfileIdentifier] = assetProfile; + } + } + + return assetProfiles; + } + public async getDividends({ dataSource, from, @@ -225,36 +347,35 @@ export class DataProviderService implements OnModuleInit { const granularityQuery = aGranularity === 'month' - ? `AND (date_part('day', date) = 1 OR date >= TIMESTAMP 'yesterday')` - : ''; + ? Prisma.sql`AND (date_part('day', date) = 1 OR date >= TIMESTAMP 'yesterday')` + : Prisma.empty; const rangeQuery = from && to - ? `AND date >= '${format(from, DATE_FORMAT)}' AND date <= '${format( + ? Prisma.sql`AND date >= ${format(from, DATE_FORMAT)}::timestamp AND date <= ${format( to, DATE_FORMAT - )}'` - : ''; + )}::timestamp` + : Prisma.empty; const dataSources = aItems.map(({ dataSource }) => { return dataSource; }); + const symbols = aItems.map(({ symbol }) => { return symbol; }); try { - const queryRaw = ` - SELECT * - FROM "MarketData" - WHERE "dataSource" IN ('${dataSources.join(`','`)}') - AND "symbol" IN ('${symbols.join( - `','` - )}') ${granularityQuery} ${rangeQuery} - ORDER BY date;`; - - const marketDataByGranularity: MarketData[] = - await this.prismaService.$queryRawUnsafe(queryRaw); + const marketDataByGranularity: MarketData[] = await this.prismaService + .$queryRaw` + SELECT * + FROM "MarketData" + WHERE "dataSource"::text IN (${Prisma.join(dataSources)}) + AND "symbol" IN (${Prisma.join(symbols)}) + ${granularityQuery} + ${rangeQuery} + ORDER BY date;`; response = marketDataByGranularity.reduce((r, marketData) => { const { date, marketPrice, symbol } = marketData; diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 7392f0914..51e65e631 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -105,7 +105,10 @@ export class ManualService implements DataProviderInterface { return {}; } - const value = await this.scrape(symbolProfile.scraperConfiguration); + const value = await this.scrape({ + symbol, + scraperConfiguration: symbolProfile.scraperConfiguration + }); return { [symbol]: { @@ -170,7 +173,10 @@ export class ManualService implements DataProviderInterface { symbolProfilesWithScraperConfigurationAndInstantMode.map( async ({ scraperConfiguration, symbol }) => { try { - const marketPrice = await this.scrape(scraperConfiguration); + const marketPrice = await this.scrape({ + scraperConfiguration, + symbol + }); return { marketPrice, symbol }; } catch (error) { Logger.error( @@ -267,13 +273,23 @@ export class ManualService implements DataProviderInterface { }; } - public async test(scraperConfiguration: ScraperConfiguration) { - return this.scrape(scraperConfiguration); + public async test({ + scraperConfiguration, + symbol + }: { + scraperConfiguration: ScraperConfiguration; + symbol: string; + }) { + return this.scrape({ scraperConfiguration, symbol }); } - private async scrape( - scraperConfiguration: ScraperConfiguration - ): Promise { + private async scrape({ + scraperConfiguration, + symbol + }: { + scraperConfiguration: ScraperConfiguration; + symbol: string; + }): Promise { let locale = scraperConfiguration.locale; const response = await fetch(scraperConfiguration.url, { @@ -283,6 +299,12 @@ export class ManualService implements DataProviderInterface { ) }); + if (!response.ok) { + throw new Error( + `Failed to scrape the market price for ${symbol} (${this.getName()}): ${response.status} ${response.statusText} at ${scraperConfiguration.url}` + ); + } + let value: string; if (response.headers.get('content-type')?.includes('application/json')) { diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 15dd8f13a..e41d3415c 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -102,8 +102,6 @@
Holdings
[]; @@ -374,7 +379,7 @@ export class GfAdminMarketDataComponent this.pageSize = this.activeFilters.length === 1 && this.activeFilters[0].type === 'PRESET_ID' - ? undefined + ? Number.MAX_SAFE_INTEGER : DEFAULT_PAGE_SIZE; if (pageIndex === 0 && this.paginator) { 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 cbd8deba3..b1519e35b 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 @@ -5,7 +5,11 @@ import { PROPERTY_IS_DATA_GATHERING_ENABLED } from '@ghostfolio/common/config'; import { UpdateAssetProfileDto } from '@ghostfolio/common/dtos'; -import { DATE_FORMAT } from '@ghostfolio/common/helper'; +import { + DATE_FORMAT, + getCurrencyFromSymbol, + isCurrency +} from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, AssetClassSelectorOption, @@ -138,7 +142,6 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { }); public assetSubClassOptions: AssetClassSelectorOption[] = []; - public assetProfile: AdminMarketDataDetails['assetProfile']; public assetProfileForm = this.formBuilder.group({ @@ -180,12 +183,14 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { ); public benchmarks: Partial[]; + public canEditAssetProfile = true; public countries: { [code: string]: { name: string; value: number }; }; public currencies: string[] = []; + public dateRangeOptions = [ { label: $localize`Current week` + ' (' + $localize`WTD` + ')', @@ -260,7 +265,7 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { } public get canSaveAssetProfileIdentifier() { - return !this.assetProfileForm.dirty; + return !this.assetProfileForm.dirty && this.canEditAssetProfile; } public ngOnInit() { @@ -324,6 +329,11 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { this.assetClassLabel = translate(this.assetProfile?.assetClass); this.assetSubClassLabel = translate(this.assetProfile?.assetSubClass); + + this.canEditAssetProfile = !isCurrency( + getCurrencyFromSymbol(this.data.symbol) + ); + this.countries = {}; this.isBenchmark = this.benchmarks.some(({ id }) => { @@ -390,6 +400,10 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { url: this.assetProfile?.url ?? '' }); + if (!this.canEditAssetProfile) { + this.assetProfileForm.disable(); + } + this.assetProfileForm.markAsPristine(); this.changeDetectorRef.markForCheck(); @@ -399,7 +413,9 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { public onCancelEditAssetProfileIdentifierMode() { this.isEditAssetProfileIdentifierMode = false; - this.assetProfileForm.enable(); + if (this.canEditAssetProfile) { + this.assetProfileForm.enable(); + } this.assetProfileIdentifierForm.reset(); } 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 a60e10edc..6b3141bfe 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 @@ -300,6 +300,7 @@
Data Gathering diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 27df91a17..86f4676f3 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -377,7 +377,6 @@ @@ -180,18 +184,21 @@ [ngClass]="{ 'cursor-pointer': hasPermissionToUpdateUserSettings && + !user?.settings?.isRestrictedView && user?.subscription?.type !== 'Basic' }" (click)=" hasPermissionToUpdateUserSettings && + !user?.settings?.isRestrictedView && user?.subscription?.type !== 'Basic' && onEditEmergencyFund() " > @if ( hasPermissionToUpdateUserSettings && - user?.subscription?.type !== 'Basic' && - !isLoading + !isLoading && + !user?.settings?.isRestrictedView && + user?.subscription?.type !== 'Basic' ) { (); - public onLoad() { this.isLoading = false; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/pages/about/license/license-page.component.ts b/apps/client/src/app/pages/about/license/license-page.component.ts index 0dc5b2f51..d530d0418 100644 --- a/apps/client/src/app/pages/about/license/license-page.component.ts +++ b/apps/client/src/app/pages/about/license/license-page.component.ts @@ -1,6 +1,5 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { MarkdownModule } from 'ngx-markdown'; -import { Subject } from 'rxjs'; @Component({ imports: [MarkdownModule], @@ -8,11 +7,4 @@ import { Subject } from 'rxjs'; styleUrls: ['./license-page.scss'], templateUrl: './license-page.html' }) -export class GfLicensePageComponent implements OnDestroy { - private unsubscribeSubject = new Subject(); - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } -} +export class GfLicensePageComponent {} diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts index bdbbdf9a7..c2e500a52 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts @@ -1,10 +1,9 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { arrowForwardOutline } from 'ionicons/icons'; -import { Subject } from 'rxjs'; const ossFriends = require('../../../../assets/oss-friends.json'); @@ -14,17 +13,10 @@ const ossFriends = require('../../../../assets/oss-friends.json'); styleUrls: ['./oss-friends-page.scss'], templateUrl: './oss-friends-page.html' }) -export class GfOpenSourceSoftwareFriendsPageComponent implements OnDestroy { +export class GfOpenSourceSoftwareFriendsPageComponent { public ossFriends = ossFriends.data; - private unsubscribeSubject = new Subject(); - public constructor() { addIcons({ arrowForwardOutline }); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index bea19a1b9..9c399762b 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -9,9 +9,10 @@ import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, - OnDestroy, + DestroyRef, OnInit } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; @@ -23,8 +24,6 @@ import { logoX, mail } from 'ionicons/icons'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; @Component({ imports: [CommonModule, IonIcon, MatButtonModule, RouterModule], @@ -33,7 +32,7 @@ import { takeUntil } from 'rxjs/operators'; styleUrls: ['./about-overview-page.scss'], templateUrl: './about-overview-page.html' }) -export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { +export class GfAboutOverviewPageComponent implements OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public isLoggedIn: boolean; @@ -43,11 +42,10 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public user: User; - private unsubscribeSubject = new Subject(); - public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private destroyRef: DestroyRef, private userService: UserService ) { const { globalPermissions } = this.dataService.fetchInfo(); @@ -67,7 +65,7 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { public ngOnInit() { this.userService.stateChanged - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe((state) => { if (state?.user) { this.user = state.user; @@ -76,9 +74,4 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { } }); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index 2fb3ef812..cab1caa23 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -209,7 +209,7 @@
Browser testing via
@@ -217,9 +217,9 @@ alt="TestMu AI Logo" height="32" [src]=" - user?.settings?.colorScheme === 'LIGHT' - ? '../assets/images/sponsors/logo-testmu-dark.svg' - : '../assets/images/sponsors/logo-testmu-light.svg' + user?.settings?.colorScheme === 'DARK' + ? '../assets/images/sponsors/logo-testmu-light.svg' + : '../assets/images/sponsors/logo-testmu-dark.svg' " /> diff --git a/apps/client/src/app/pages/accounts/accounts-page.html b/apps/client/src/app/pages/accounts/accounts-page.html index 0c6b7b8f3..3d9d7ee5c 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.html +++ b/apps/client/src/app/pages/accounts/accounts-page.html @@ -6,7 +6,6 @@ [accounts]="accounts" [activitiesCount]="activitiesCount" [baseCurrency]="user?.settings?.baseCurrency" - [deviceType]="deviceType" [locale]="user?.settings?.locale" [showActions]=" !hasImpersonationId && diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts index b9243dcb9..284d3c41d 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -1,7 +1,7 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; @@ -14,7 +14,6 @@ import { settingsOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; -import { Subject } from 'rxjs'; @Component({ host: { class: 'page has-tabs' }, @@ -23,12 +22,10 @@ import { Subject } from 'rxjs'; styleUrls: ['./admin-page.scss'], templateUrl: './admin-page.html' }) -export class AdminPageComponent implements OnDestroy, OnInit { +export class AdminPageComponent implements OnInit { public deviceType: string; public tabs: TabConfiguration[] = []; - private unsubscribeSubject = new Subject(); - public constructor(private deviceService: DeviceDetectorService) { addIcons({ flashOutline, @@ -74,9 +71,4 @@ export class AdminPageComponent implements OnDestroy, OnInit { } ]; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/pages/demo/demo-page.component.ts b/apps/client/src/app/pages/demo/demo-page.component.ts index 5b94fd541..235805dcc 100644 --- a/apps/client/src/app/pages/demo/demo-page.component.ts +++ b/apps/client/src/app/pages/demo/demo-page.component.ts @@ -3,9 +3,8 @@ import { InfoItem } from '@ghostfolio/common/interfaces'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { DataService } from '@ghostfolio/ui/services'; -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { Router } from '@angular/router'; -import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, @@ -13,11 +12,9 @@ import { Subject } from 'rxjs'; standalone: true, templateUrl: './demo-page.html' }) -export class GfDemoPageComponent implements OnDestroy { +export class GfDemoPageComponent { public info: InfoItem; - private unsubscribeSubject = new Subject(); - public constructor( private dataService: DataService, private notificationService: NotificationService, @@ -40,9 +37,4 @@ export class GfDemoPageComponent implements OnDestroy { this.router.navigate(['/']); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html index 42e810eb0..ef88df9aa 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html @@ -93,6 +93,10 @@ dialog +

+ For derived currencies (e.g. GBp), ensure that you + gather the data for the parent currency (e.g. GBP). +

diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html index b4297d5ac..99ef3039e 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -149,14 +149,14 @@
  • An emergency fund has been set up
  • -
  • Fee Ratio
  • -
  • - The fees do exceed ${thresholdMax}% of your initial investment - (${feeRatio}%) -
  • -
  • - The fees do not exceed ${thresholdMax}% of your initial - investment (${feeRatio}%) +
  • Fee Ratio
  • +
  • + The fees do exceed ${thresholdMax}% of your total investment + volume (${feeRatio}%) +
  • +
  • + The fees do not exceed ${thresholdMax}% of your total + investment volume (${feeRatio}%)
  • Fees
  • 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 8695f04ed..c7cd63191 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 @@ -188,8 +188,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { !this.data.activity?.accountId && this.mode === 'create' ? this.data.accounts[0].id - : this.data.activity?.accountId, - Validators.required + : this.data.activity?.accountId ], assetClass: [this.data.activity?.SymbolProfile?.assetClass], assetSubClass: [this.data.activity?.SymbolProfile?.assetSubClass], @@ -365,11 +364,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { (this.activityForm.get('dataSource').value === 'MANUAL' && type === 'BUY') ) { - this.activityForm - .get('accountId') - .removeValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); - const currency = this.data.accounts.find(({ id }) => { return id === this.activityForm.get('accountId').value; @@ -397,11 +391,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { this.activityForm.get('updateAccountBalance').disable(); this.activityForm.get('updateAccountBalance').setValue(false); } else if (['FEE', 'INTEREST', 'LIABILITY'].includes(type)) { - this.activityForm - .get('accountId') - .removeValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); - const currency = this.data.accounts.find(({ id }) => { return id === this.activityForm.get('accountId').value; @@ -447,8 +436,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { this.activityForm.get('updateAccountBalance').setValue(false); } } else { - this.activityForm.get('accountId').setValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); this.activityForm .get('dataSource') .setValidators(Validators.required); @@ -514,11 +501,12 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { comment: this.activityForm.get('comment').value || null, currency: this.activityForm.get('currency').value, customCurrency: this.activityForm.get('currencyOfUnitPrice').value, + dataSource: ['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes( + this.activityForm.get('type').value + ) + ? 'MANUAL' + : this.activityForm.get('dataSource').value, date: this.activityForm.get('date').value, - dataSource: - this.activityForm.get('type').value === 'VALUABLE' - ? 'MANUAL' - : this.activityForm.get('dataSource').value, fee: this.activityForm.get('fee').value, quantity: this.activityForm.get('quantity').value, symbol: diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 42fbd0ebf..278ddcbbd 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -84,12 +84,8 @@ > Account - @if ( - !activityForm.get('accountId').hasValidator(Validators.required) || - (!activityForm.get('accountId').value && mode === 'update') - ) { - - } + + @for (account of data.accounts; track account) {
    diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html index 079566e0d..c422f9006 100644 --- a/apps/client/src/app/pages/public/public-page.html +++ b/apps/client/src/app/pages/public/public-page.html @@ -78,7 +78,6 @@ [showLabels]="deviceType !== 'mobile'" /> (); - public constructor(private deviceService: DeviceDetectorService) { addIcons({ bookOutline, libraryOutline, newspaperOutline, readerOutline }); } @@ -56,9 +53,4 @@ export class ResourcesPageComponent implements OnInit { public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 94d8470f7..55b5c44d5 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -97,9 +97,7 @@ export class ImportActivitiesService { isin: null, marketData: [], name: symbol, - scraperConfiguration: null, sectors: [], - symbolMapping: {}, url: null }); } diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index a6bec7df3..d878a63bf 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -403,7 +403,7 @@ Balanç de Caixa apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -455,7 +455,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -511,7 +511,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -531,15 +531,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -625,6 +625,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -647,7 +651,7 @@ Realment vol suprimir aquest compte? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -707,7 +711,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -819,7 +823,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -867,7 +871,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -891,7 +895,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -931,7 +935,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -999,7 +1003,7 @@ Oooh! No s’han pogut recopilar les dades históriques. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -1031,7 +1035,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -1063,7 +1067,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -1083,7 +1087,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1175,7 +1179,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1219,7 +1223,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1483,7 +1487,7 @@ Està segur que vol eliminar aquest usuari? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1519,7 +1523,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1715,7 +1719,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1743,7 +1747,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1767,7 +1771,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1807,7 +1811,7 @@ Gestionar Activitats apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1959,7 +1963,7 @@ Import total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2095,7 +2099,7 @@ Rendiment brut absolut apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -2103,7 +2107,7 @@ Rendiment net absolut apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -2115,7 +2119,7 @@ Rendiment net apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -2127,7 +2131,7 @@ Actius totals apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -2135,7 +2139,7 @@ Actius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -2143,7 +2147,7 @@ Poder adquisitiu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -2151,7 +2155,7 @@ Exclòs de l’anàlisi apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2159,7 +2163,7 @@ Passius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -2171,7 +2175,7 @@ Valor net apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -2179,7 +2183,7 @@ Rendiment anualitzat apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -2339,7 +2343,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2351,7 +2355,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2363,7 +2367,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2375,7 +2379,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2395,7 +2399,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2451,7 +2455,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -2939,7 +2943,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -3039,7 +3043,7 @@ Dades de mercat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3091,11 +3095,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -3239,7 +3243,7 @@ Com que ja has iniciat sessió, no pots accedir al compte de demostració. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3436,7 +3440,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -3512,7 +3516,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3996,7 +4000,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -4020,7 +4024,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -4100,7 +4104,7 @@ Actualitzar el saldo d’efectiu apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4108,7 +4112,7 @@ Preu unitari apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4348,7 +4352,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -4372,7 +4376,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -4380,7 +4384,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -4392,7 +4396,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -4404,7 +4408,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -4480,7 +4484,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -4488,7 +4492,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4552,7 +4556,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -4876,7 +4880,7 @@ Continents apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -4884,7 +4888,7 @@ Vols refinar la teva estratègia d’inversió personal? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -4900,7 +4904,7 @@ Ghostfolio us permet fer un seguiment de la vostra riquesa. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -5273,7 +5277,7 @@ Pertinença apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5341,7 +5345,7 @@ Realment voleu eliminar el saldo d’aquest compte? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5405,7 +5409,7 @@ De veritat vols suprimir aquestes activitats? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -5413,7 +5417,7 @@ Realment vols suprimir aquesta activitat? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -5421,7 +5425,7 @@ Setmana fins avui libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5433,7 +5437,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5441,7 +5445,7 @@ Mes fins a la data libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5453,7 +5457,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5461,7 +5465,7 @@ Any fins a la data libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5481,7 +5485,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -5493,7 +5497,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -5641,7 +5645,7 @@ Dipòsit libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -5653,11 +5657,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5669,7 +5673,7 @@ Estalvi libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5697,7 +5701,7 @@ Mostra-ho tot libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -5749,7 +5753,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5781,7 +5785,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5833,7 +5837,7 @@ Fons d’emergència apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -5909,7 +5913,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -5920,6 +5924,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Provisió de jubilació @@ -6037,7 +6049,7 @@ Comissió apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -6081,7 +6093,7 @@ Efectiu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -6137,7 +6149,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -6305,7 +6317,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -6313,11 +6325,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6809,7 +6825,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Security token apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Do you really want to generate a new security token for this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,7 +7888,7 @@ 150 - + Fee Ratio Fee Ratio @@ -7880,17 +7896,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 44ee607c3..54c3f7de8 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -134,7 +134,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -178,15 +178,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -272,6 +272,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -294,7 +298,7 @@ Möchtest du dieses Konto wirklich löschen? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -322,7 +326,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -434,7 +438,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -502,7 +506,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -646,7 +650,7 @@ Möchtest du diesen Benutzer wirklich löschen? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -682,7 +686,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -738,7 +742,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -790,7 +794,7 @@ Aktivitäten verwalten apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -906,7 +910,7 @@ Absolute Brutto Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -914,7 +918,7 @@ Absolute Netto Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -926,7 +930,7 @@ Netto Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -938,7 +942,7 @@ Gesamtanlagevermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -946,7 +950,7 @@ Kaufkraft apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -954,7 +958,7 @@ Gesamtvermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -962,7 +966,7 @@ Performance pro Jahr apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -990,7 +994,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1030,7 +1034,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1058,7 +1062,7 @@ Alle anzeigen libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -1070,7 +1074,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1082,7 +1086,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1094,7 +1098,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1106,7 +1110,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1126,7 +1130,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1342,7 +1346,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1394,7 +1398,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1446,7 +1450,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1626,7 +1630,7 @@ Da du bereits eingeloggt bist, kannst du nicht auf die Live Demo zugreifen. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1690,11 +1694,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1734,7 +1738,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1834,7 +1838,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -1974,7 +1978,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1986,7 +1990,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2002,7 +2006,7 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2022,7 +2026,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2034,7 +2038,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2058,7 +2062,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2158,7 +2162,7 @@ Kontinente apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -2174,7 +2178,7 @@ Ghostfolio verschafft dir den Überblick über dein Vermögen. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2322,7 +2326,7 @@ Möchtest du diese Aktivität wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2454,7 +2458,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -2478,7 +2482,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -2486,7 +2490,7 @@ Neueste Aktivitäten apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2498,7 +2502,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2510,7 +2514,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2542,7 +2546,7 @@ Einlage libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2554,11 +2558,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2570,7 +2574,7 @@ Ersparnisse libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2626,7 +2630,7 @@ Filtern nach... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -2702,7 +2706,7 @@ Von der Analyse ausgenommen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2746,7 +2750,7 @@ Gesamtbetrag apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2806,7 +2810,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2862,7 +2866,7 @@ Bargeld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -2910,7 +2914,7 @@ Authentifizierung apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -2974,7 +2978,7 @@ Notfallfonds apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -2994,7 +2998,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -3006,7 +3010,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -3014,11 +3018,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3154,7 +3158,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3162,7 +3166,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3194,7 +3198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3230,7 +3234,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3238,7 +3242,7 @@ Marktdaten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3353,6 +3357,14 @@ 22 + + No Activities + Keine Aktivitäten + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Altersvorsorge @@ -3650,7 +3662,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3822,7 +3834,7 @@ Möchtest du diese Aktivitäten wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3914,7 +3926,7 @@ Cash-Bestand aktualisieren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4094,7 +4106,7 @@ Verbindlichkeiten apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4510,7 +4522,7 @@ Anlagevermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4742,7 +4754,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -5456,7 +5468,7 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5556,7 +5568,7 @@ Mitgliedschaft apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5712,7 +5724,7 @@ Ups! Die historischen Daten konnten nicht geparsed werden. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5744,7 +5756,7 @@ Cash-Bestände apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5764,7 +5776,7 @@ Möchtest du diesen Cash-Bestand wirklich löschen? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5900,7 +5912,7 @@ Position abschliessen apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5940,7 +5952,7 @@ Seit Wochenbeginn libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5952,7 +5964,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5960,7 +5972,7 @@ Seit Monatsbeginn libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5972,7 +5984,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5980,7 +5992,7 @@ Seit Jahresbeginn libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6028,7 +6040,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6040,7 +6052,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6353,7 +6365,7 @@ Möchtest du deine persönliche Anlagestrategie verfeinern? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6769,7 +6781,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6777,7 +6789,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6815,13 +6827,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6833,7 +6849,7 @@ Rolle apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7125,7 +7141,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7141,7 +7157,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7239,7 +7255,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7347,11 +7363,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7503,7 +7519,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7523,11 +7539,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7631,7 +7647,7 @@ Sicherheits-Token apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7643,7 +7659,7 @@ Möchtest du für diesen Benutzer wirklich ein neues Sicherheits-Token generieren? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7651,7 +7667,7 @@ Konto, Position oder Seite finden... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7842,7 +7858,7 @@ Sync Demo User Account - Synchronisiere Demo Benutzerkonto + Synchronisiere Demo Benutzerkonto apps/client/src/app/components/admin-overview/admin-overview.html 195 @@ -7872,7 +7888,7 @@ 150 - + Fee Ratio Gebührenverhältnis @@ -7880,17 +7896,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%) nicht apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Anlageprofil verwalten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registrierungsdatum apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 7564e4d80..ba5a38d67 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -135,7 +135,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -179,15 +179,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -273,6 +273,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -295,7 +299,7 @@ ¿Estás seguro de eliminar esta cuenta? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -323,7 +327,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -435,7 +439,7 @@ Fecha apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -503,7 +507,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -631,7 +635,7 @@ ¿Estás seguro de eliminar este usuario? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -667,7 +671,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -723,7 +727,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -775,7 +779,7 @@ Gestión de las operaciones apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -891,7 +895,7 @@ Rendimiento bruto absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -899,7 +903,7 @@ Rendimiento neto absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -911,7 +915,7 @@ Rendimiento neto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -923,7 +927,7 @@ Total de activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -931,7 +935,7 @@ Capacidad de compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -939,7 +943,7 @@ Patrimonio neto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -947,7 +951,7 @@ Rendimiento anualizado apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -975,7 +979,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1015,7 +1019,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1043,7 +1047,7 @@ Mostrar todos libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -1055,7 +1059,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1067,7 +1071,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1079,7 +1083,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1091,7 +1095,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1111,7 +1115,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1327,7 +1331,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1379,7 +1383,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1431,7 +1435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1611,7 +1615,7 @@ Como estás conectado, no puedes acceder a la cuenta de demostración. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1675,11 +1679,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1719,7 +1723,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1819,7 +1823,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -1959,7 +1963,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1971,7 +1975,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1987,7 +1991,7 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2007,7 +2011,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2019,7 +2023,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2043,7 +2047,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2143,7 +2147,7 @@ Continentes apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -2159,7 +2163,7 @@ Ghostfolio te permite hacer un seguimiento de tu riqueza. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2307,7 +2311,7 @@ ¿Estás seguro de eliminar esta operación? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2415,7 +2419,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -2423,7 +2427,7 @@ Últimas actividades apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2443,7 +2447,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2455,7 +2459,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2487,7 +2491,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -2511,7 +2515,7 @@ Ahorros libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2523,11 +2527,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2547,7 +2551,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2611,7 +2615,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -2687,7 +2691,7 @@ Excluido del análisis apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2731,7 +2735,7 @@ Importe total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2791,7 +2795,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2847,7 +2851,7 @@ Efectivo apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -2895,7 +2899,7 @@ Autenticación apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -2959,7 +2963,7 @@ Fondo de emergencia apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -2979,7 +2983,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -2991,7 +2995,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -2999,11 +3003,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3131,7 +3135,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3139,7 +3143,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3179,7 +3183,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3215,7 +3219,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3223,7 +3227,7 @@ Datos del mercado apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3338,6 +3342,14 @@ 22 + + No Activities + Sin actividades + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Provisión de jubilación @@ -3635,7 +3647,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3799,7 +3811,7 @@ ¿Realmente deseas eliminar estas actividades? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3891,7 +3903,7 @@ Actualizar saldo en efectivo apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4071,7 +4083,7 @@ Pasivos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4487,7 +4499,7 @@ Activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4719,7 +4731,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -5433,7 +5445,7 @@ Tarifa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5533,7 +5545,7 @@ Membresía apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5689,7 +5701,7 @@ ¡Ups! No se pudieron analizar los datos históricos. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5721,7 +5733,7 @@ Saldos de efectivo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5741,7 +5753,7 @@ ¿Realmente desea eliminar el saldo de esta cuenta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5877,7 +5889,7 @@ Cerrar posición apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5917,7 +5929,7 @@ Semana hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5929,7 +5941,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5937,7 +5949,7 @@ Mes hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5949,7 +5961,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5957,7 +5969,7 @@ El año hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6005,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6017,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6330,7 +6342,7 @@ ¿Te gustaría refinar tu estrategia de inversión personal? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6746,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6754,7 +6766,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6792,13 +6804,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6810,7 +6826,7 @@ Rol apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7102,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7118,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7216,7 +7232,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7324,11 +7340,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7480,7 +7496,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7500,11 +7516,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7608,7 +7624,7 @@ Token de seguridad apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7620,7 +7636,7 @@ ¿Realmente deseas generar un nuevo token de seguridad para este usuario? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7628,7 +7644,7 @@ Buscar cuenta, posición o página... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7873,7 +7889,7 @@ 150 - + Fee Ratio Relación de tarifas @@ -7881,17 +7897,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Las tarifas superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Las tarifas no superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8064,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8277,7 +8293,7 @@ Gestionar perfil de activo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8697,7 +8713,7 @@ Fecha de registro apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 0da1c3f6a..f343cb2ad 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -142,7 +142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -234,15 +234,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -328,6 +328,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -350,7 +354,7 @@ Voulez-vous vraiment supprimer ce compte ? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -370,7 +374,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -490,7 +494,7 @@ Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -526,7 +530,7 @@ Filtrer par... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -566,7 +570,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -634,7 +638,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -654,7 +658,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -694,7 +698,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -842,7 +846,7 @@ Voulez-vous vraiment supprimer cet·te utilisateur·rice ? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -878,7 +882,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1010,7 +1014,7 @@ Gérer les Activités apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1062,7 +1066,7 @@ Montant Total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1174,7 +1178,7 @@ Performance Absolue Brute apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1182,7 +1186,7 @@ Performance Absolue Nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1194,7 +1198,7 @@ Performance nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1206,7 +1210,7 @@ Actifs Totaux apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1214,7 +1218,7 @@ Pouvoir d’Achat apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1222,7 +1226,7 @@ Exclus de l’Analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1230,7 +1234,7 @@ Fortune apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1238,7 +1242,7 @@ Performance annualisée apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1274,7 +1278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1290,7 +1294,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1302,7 +1306,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1314,7 +1318,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1326,7 +1330,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1338,7 +1342,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1358,7 +1362,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1662,7 +1666,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1714,7 +1718,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1758,7 +1762,7 @@ Données du marché apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -1902,7 +1906,7 @@ Puisque vous êtes déjà connecté·e, vous ne pouvez pas accéder au compte de démonstration. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2014,7 +2018,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -2042,7 +2046,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2066,7 +2070,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2138,7 +2142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -2146,7 +2150,7 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2218,7 +2222,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -2310,7 +2314,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -2334,7 +2338,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -2342,7 +2346,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2354,7 +2358,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2366,7 +2370,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2402,7 +2406,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -2410,7 +2414,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -2434,7 +2438,7 @@ Dépôt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2546,7 +2550,7 @@ Continents apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -2562,7 +2566,7 @@ Ghostfolio vous aide à garder un aperçu de votre patrimoine. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2590,7 +2594,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -2714,11 +2718,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2798,7 +2802,7 @@ Voulez-vous vraiment supprimer cette activité ? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2850,11 +2854,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2866,7 +2870,7 @@ Épargne libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2894,7 +2898,7 @@ Montrer tout libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -2938,7 +2942,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2970,7 +2974,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -2982,7 +2986,7 @@ Fonds d’Urgence apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -3002,7 +3006,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -3050,7 +3054,7 @@ Cash apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -3098,7 +3102,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -3230,7 +3234,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -3238,11 +3242,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3337,6 +3341,14 @@ 22 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Réserve pour retraite @@ -3634,7 +3646,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3798,7 +3810,7 @@ Voulez-vous vraiment supprimer toutes vos activités ? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3890,7 +3902,7 @@ Mettre à jour le Solde apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4070,7 +4082,7 @@ Dettes apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4486,7 +4498,7 @@ Actifs apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4718,7 +4730,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -5432,7 +5444,7 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5532,7 +5544,7 @@ Statut apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5688,7 +5700,7 @@ Oops! Echec du parsing des données historiques. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5720,7 +5732,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5740,7 +5752,7 @@ Voulez-vous vraiment supprimer ce solde de compte ? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5876,7 +5888,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5916,7 +5928,7 @@ Week to date libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5928,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5936,7 +5948,7 @@ Month to date libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5948,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5956,7 +5968,7 @@ Year to date libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6004,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6016,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6329,7 +6341,7 @@ Souhaitez-vous affiner votre stratégie d’investissement personnelle? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6809,7 +6825,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Jeton de sécurité apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Voulez-vous vraiment générer un nouveau jeton de sécurité pour cet utilisateur ? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,25 +7888,25 @@ 150 - + Fee Ratio - Ratio de frais + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Gérer le profil d’actif apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 746e1fbd1..20bfd1b33 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -135,7 +135,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -179,15 +179,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -273,6 +273,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -295,7 +299,7 @@ Vuoi davvero eliminare questo account? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -323,7 +327,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -435,7 +439,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -503,7 +507,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -631,7 +635,7 @@ Vuoi davvero eliminare questo utente? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -667,7 +671,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -723,7 +727,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -775,7 +779,7 @@ Gestione delle attività apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -891,7 +895,7 @@ Prestazioni lorde assolute apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -899,7 +903,7 @@ Prestazioni nette assolute apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -911,7 +915,7 @@ Prestazioni nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -923,7 +927,7 @@ Asset totali apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -931,7 +935,7 @@ Potere d’acquisto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -939,7 +943,7 @@ Patrimonio netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -947,7 +951,7 @@ Prestazioni annualizzate apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -975,7 +979,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1015,7 +1019,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1043,7 +1047,7 @@ Mostra tutti libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -1055,7 +1059,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1067,7 +1071,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1079,7 +1083,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1091,7 +1095,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1111,7 +1115,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1327,7 +1331,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1379,7 +1383,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1431,7 +1435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1611,7 +1615,7 @@ Poiché hai già effettuato l’accesso, non puoi accedere all’account demo. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1675,11 +1679,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1719,7 +1723,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1819,7 +1823,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -1959,7 +1963,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1971,7 +1975,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1987,7 +1991,7 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2007,7 +2011,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2019,7 +2023,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2043,7 +2047,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2143,7 +2147,7 @@ Continenti apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -2159,7 +2163,7 @@ Ghostfolio ti permette di tenere traccia della tua ricchezza. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2307,7 +2311,7 @@ Vuoi davvero eliminare questa attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2415,7 +2419,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -2423,7 +2427,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2443,7 +2447,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2455,7 +2459,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2487,7 +2491,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -2511,7 +2515,7 @@ Risparmio libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2523,11 +2527,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2547,7 +2551,7 @@ Deposito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2611,7 +2615,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -2687,7 +2691,7 @@ Escluso dall’analisi apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2731,7 +2735,7 @@ Importo totale apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2791,7 +2795,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2847,7 +2851,7 @@ Contanti apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -2895,7 +2899,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -2959,7 +2963,7 @@ Fondo di emergenza apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -2979,7 +2983,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -2991,7 +2995,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -2999,11 +3003,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3131,7 +3135,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3139,7 +3143,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3179,7 +3183,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3215,7 +3219,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3223,7 +3227,7 @@ Dati del mercato apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3240,7 +3244,7 @@ Summary - Summario + Riepilogo apps/client/src/app/components/home-summary/home-summary.html 2 @@ -3338,6 +3342,14 @@ 22 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Fondo pensione @@ -3635,7 +3647,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3799,7 +3811,7 @@ Vuoi davvero eliminare tutte le tue attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3891,7 +3903,7 @@ Aggiornamento del saldo di cassa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4071,7 +4083,7 @@ Passività apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4487,7 +4499,7 @@ Asset apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4719,7 +4731,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -5433,7 +5445,7 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5533,7 +5545,7 @@ Iscrizione apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5689,7 +5701,7 @@ Ops! Impossibile elaborare i dati storici. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5721,7 +5733,7 @@ Saldi di cassa apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5741,7 +5753,7 @@ Vuoi veramente elimnare il saldo di questo conto? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5877,7 +5889,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5917,7 +5929,7 @@ Da inizio settimana libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5929,7 +5941,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5937,7 +5949,7 @@ Da inizio mese libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5949,7 +5961,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5957,7 +5969,7 @@ Da inizio anno libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6005,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6017,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6330,7 +6342,7 @@ Vorresti perfezionare la tua strategia personale di investimento? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6746,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6754,7 +6766,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6792,13 +6804,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6810,7 +6826,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7102,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7118,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7216,7 +7232,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7324,11 +7340,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7480,7 +7496,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7500,11 +7516,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7608,7 +7624,7 @@ Token di sicurezza apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7620,7 +7636,7 @@ Vuoi davvero generare un nuovo token di sicurezza per questo utente? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7628,7 +7644,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7873,25 +7889,25 @@ 150 - + Fee Ratio - Rapporto tariffario + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8064,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8277,7 +8293,7 @@ Gestisci profilo risorsa apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8697,7 +8713,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.ko.xlf b/apps/client/src/locales/messages.ko.xlf index 67443706b..9b7c4192e 100644 --- a/apps/client/src/locales/messages.ko.xlf +++ b/apps/client/src/locales/messages.ko.xlf @@ -336,7 +336,7 @@ 현금 잔액 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -388,7 +388,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -444,7 +444,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -464,15 +464,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -558,6 +558,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -580,7 +584,7 @@ 이 계정을 정말 삭제하시겠습니까? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -620,7 +624,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -716,7 +720,7 @@ 날짜 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -756,7 +760,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -788,7 +792,7 @@ 다음 기준으로 필터... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -828,7 +832,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -880,7 +884,7 @@ 이런! 과거 데이터를 파싱할 수 없습니다. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -912,7 +916,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -944,7 +948,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -964,7 +968,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1020,7 +1024,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1064,7 +1068,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1344,7 +1348,7 @@ 이 사용자를 정말로 삭제하시겠습니까? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1380,7 +1384,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1536,7 +1540,7 @@ 활동 관리 apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1688,7 +1692,7 @@ 총액 apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1800,7 +1804,7 @@ 절대 총 성과 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1812,7 +1816,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1820,7 +1824,7 @@ 절대 순 성과 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1832,7 +1836,7 @@ 순 성과 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1844,7 +1848,7 @@ 총자산 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1852,7 +1856,7 @@ 자산 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -1860,7 +1864,7 @@ 매수 가능 금액 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1868,7 +1872,7 @@ 분석에서 제외됨 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1876,7 +1880,7 @@ 부채 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -1888,7 +1892,7 @@ 순자산 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1896,7 +1900,7 @@ 연환산 성과 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1932,7 +1936,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1948,7 +1952,7 @@ 데이터 결함 보고 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -2128,7 +2132,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2140,7 +2144,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2152,7 +2156,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2164,7 +2168,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2184,7 +2188,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2448,7 +2452,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -2640,7 +2644,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -2732,7 +2736,7 @@ 시장 데이터 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -2784,11 +2788,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2932,7 +2936,7 @@ 이미 로그인되어 있으므로 데모 계정에 접근할 수 없습니다. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3104,7 +3108,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -3180,7 +3184,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3648,7 +3652,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -3672,7 +3676,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -3692,7 +3696,7 @@ 정말로 이 활동을 삭제하시겠습니까? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3760,7 +3764,7 @@ 현금 잔액 업데이트 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3768,7 +3772,7 @@ 단가 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4008,7 +4012,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -4032,7 +4036,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -4040,7 +4044,7 @@ 최신 활동 apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -4052,7 +4056,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -4064,7 +4068,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -4124,7 +4128,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -4132,7 +4136,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4156,7 +4160,7 @@ 보증금 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4480,7 +4484,7 @@ 대륙 apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -4496,7 +4500,7 @@ Ghostfolio는 귀하의 재산을 추적할 수 있도록 해줍니다. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -4869,7 +4873,7 @@ 멤버십 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -4937,7 +4941,7 @@ 정말로 이 계정 잔액을 삭제하시겠습니까? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -4993,7 +4997,7 @@ 정말로 이 활동을 삭제하시겠습니까? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -5113,11 +5117,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5129,7 +5133,7 @@ 저금 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5157,7 +5161,7 @@ 모두 표시 libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -5209,7 +5213,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5241,7 +5245,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5285,7 +5289,7 @@ 비상자금 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -5361,7 +5365,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -5372,6 +5376,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision 퇴직금 @@ -5489,7 +5501,7 @@ 요금 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5533,7 +5545,7 @@ 현금 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -5581,7 +5593,7 @@ 입증 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -5749,7 +5761,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -5757,11 +5769,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -5877,7 +5889,7 @@ 닫기 보유 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5941,7 +5953,7 @@ 연초 현재 libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5949,7 +5961,7 @@ 이번주 현재까지 libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5957,7 +5969,7 @@ 월간 누계 libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5969,7 +5981,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5981,7 +5993,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6029,7 +6041,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6041,7 +6053,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6354,7 +6366,7 @@ 개인 투자 전략개선하시겠습니까? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6730,7 +6742,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6738,7 +6750,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6750,7 +6762,7 @@ 역할 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -6808,13 +6820,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7126,7 +7142,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7155,7 +7171,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7256,7 +7272,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7348,11 +7364,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7504,7 +7520,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7524,11 +7540,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7632,7 +7648,7 @@ 정말로 이 사용자에 대한 새 보안 토큰을 생성하시겠습니까? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7640,7 +7656,7 @@ 계정, 보유 또는 페이지 찾기... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7648,7 +7664,7 @@ 보안 토큰 apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7873,25 +7889,25 @@ 150 - + Fee Ratio - 수수료 비율 + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 수수료가 초기 투자금(${feeRatio}%)의 ${thresholdMax}%를 초과합니다. + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 수수료는 초기 투자금의 ${thresholdMax}%(${feeRatio}%)를 초과하지 않습니다. + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8064,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8277,7 +8293,7 @@ 자산 프로필 관리 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8697,7 +8713,7 @@ 등록일 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d7d0b71e8..158ff4fb1 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -39,7 +39,7 @@ please - please + alsjeblieft apps/client/src/app/pages/pricing/pricing-page.html 333 @@ -83,7 +83,7 @@ with - with + met apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 87 @@ -134,7 +134,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -178,15 +178,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -272,6 +272,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -294,7 +298,7 @@ Wil je deze rekening echt verwijderen? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -322,7 +326,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -367,7 +371,7 @@ and is driven by the efforts of its contributors - and is driven by the efforts of its contributors + en wordt gedreven door de inspanningen van zijn bijdragers apps/client/src/app/pages/about/overview/about-overview-page.html 49 @@ -434,7 +438,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -502,7 +506,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -630,7 +634,7 @@ Wilt je deze gebruiker echt verwijderen? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -651,7 +655,7 @@ No auto-renewal on membership. - No auto-renewal on membership. + Het lidmaatschap wordt niet automatisch verlengd. apps/client/src/app/components/user-account-membership/user-account-membership.html 74 @@ -666,7 +670,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -722,7 +726,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -774,7 +778,7 @@ Activiteiten beheren apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -890,7 +894,7 @@ Absoluut bruto rendement apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -898,7 +902,7 @@ Absoluut netto rendement apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -910,7 +914,7 @@ Netto rendement apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -922,7 +926,7 @@ Totaal Activa apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -930,7 +934,7 @@ Koopkracht apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -938,7 +942,7 @@ Netto waarde apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -946,7 +950,7 @@ Rendement per jaar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -974,7 +978,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1014,7 +1018,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1042,7 +1046,7 @@ Toon alle libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -1054,7 +1058,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1066,7 +1070,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1078,7 +1082,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1090,12 +1094,12 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 Performance with currency effect - Performance with currency effect + Prestaties met valuta-effect apps/client/src/app/pages/portfolio/analysis/analysis-page.html 135 @@ -1110,7 +1114,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1326,7 +1330,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1378,7 +1382,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1430,7 +1434,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1610,7 +1614,7 @@ Aangezien je al ingelogd bent, heb je geen toegang tot de demo-account. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1674,11 +1678,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1718,7 +1722,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1818,7 +1822,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -1911,7 +1915,7 @@ Current week - Current week + Huidige week apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 191 @@ -1958,7 +1962,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1970,7 +1974,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1986,7 +1990,7 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2006,7 +2010,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2018,7 +2022,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2042,7 +2046,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2075,7 +2079,7 @@ or start a discussion at - or start a discussion at + of start een discussie op apps/client/src/app/pages/about/overview/about-overview-page.html 94 @@ -2142,12 +2146,12 @@ Continenten apps/client/src/app/pages/public/public-page.html - 132 + 131 Sustainable retirement income - Sustainable retirement income + Duurzaam pensioeninkomen apps/client/src/app/pages/portfolio/fire/fire-page.html 41 @@ -2158,7 +2162,7 @@ Ghostfolio stelt je in staat om je vermogen bij te houden. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2306,7 +2310,7 @@ Wil je deze activiteit echt verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2319,7 +2323,7 @@ contact us - contact us + contacteer ons apps/client/src/app/pages/pricing/pricing-page.html 336 @@ -2395,7 +2399,7 @@ Exclude from Analysis - Exclude from Analysis + Uitsluiten van analyse apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 90 @@ -2414,15 +2418,15 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 Latest activities - Latest activities + Laatste activiteiten apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2442,7 +2446,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2454,7 +2458,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2486,7 +2490,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -2510,7 +2514,7 @@ Besparingen libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2522,11 +2526,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2535,7 +2539,7 @@ annual interest rate - annual interest rate + jaarlijkse rente apps/client/src/app/pages/portfolio/fire/fire-page.html 185 @@ -2546,7 +2550,7 @@ Storting libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2610,7 +2614,7 @@ Filter op... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -2655,7 +2659,7 @@ Could not validate form - Could not validate form + Het formulier kon niet worden gevalideerd. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 554 @@ -2686,7 +2690,7 @@ Uitgesloten van analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2730,7 +2734,7 @@ Totaalbedrag apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2790,7 +2794,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2846,7 +2850,7 @@ Contant geld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -2891,10 +2895,10 @@ Authentication - Authentication + Authenticatie apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -2958,7 +2962,7 @@ Noodfonds apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -2978,7 +2982,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -2990,7 +2994,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -2998,11 +3002,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3043,7 +3047,7 @@ If you retire today, you would be able to withdraw - If you retire today, you would be able to withdraw + Als u vandaag met pensioen gaat, kunt u apps/client/src/app/pages/portfolio/fire/fire-page.html 68 @@ -3111,7 +3115,7 @@ Looking for a student discount? - Looking for a student discount? + Op zoek naar studentenkorting? apps/client/src/app/pages/pricing/pricing-page.html 342 @@ -3130,7 +3134,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3138,7 +3142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3178,7 +3182,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3214,7 +3218,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3222,7 +3226,7 @@ Marktgegevens apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3337,6 +3341,14 @@ 22 + + No Activities + Geen activiteiten + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Pensioen @@ -3347,7 +3359,7 @@ Everything in Basic, plus - Everything in Basic, plus + Alles van Basic, plus apps/client/src/app/pages/pricing/pricing-page.html 199 @@ -3607,7 +3619,7 @@ Could not save asset profile - Could not save asset profile + Kon het assetprofiel niet opslaan apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 588 @@ -3634,7 +3646,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3798,7 +3810,7 @@ Weet je zeker dat je alle activiteiten wilt verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3811,7 +3823,7 @@ By - By + Door apps/client/src/app/pages/portfolio/fire/fire-page.html 139 @@ -3827,7 +3839,7 @@ Current year - Current year + Huidig jaar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 199 @@ -3863,7 +3875,7 @@ Asset profile has been saved - Asset profile has been saved + Het activaprofiel is opgeslagen. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 578 @@ -3890,7 +3902,7 @@ Saldo bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4055,7 +4067,7 @@ View Details - View Details + Bekijk details apps/client/src/app/components/admin-users/admin-users.html 225 @@ -4070,7 +4082,7 @@ Verplichtingen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4191,7 +4203,7 @@ per week - per week + per week apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 130 @@ -4215,7 +4227,7 @@ and we share aggregated key metrics of the platform’s performance - and we share aggregated key metrics of the platform’s performance + en we delen geaggregeerde belangrijke prestatiegegevens van het platform apps/client/src/app/pages/about/overview/about-overview-page.html 32 @@ -4259,7 +4271,7 @@ Website of Thomas Kaul - Website of Thomas Kaul + Website van Thomas Kaul apps/client/src/app/pages/about/overview/about-overview-page.html 44 @@ -4439,7 +4451,7 @@ Sign in with OpenID Connect - Sign in with OpenID Connect + Meld je aan met OpenID Connect apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 55 @@ -4486,7 +4498,7 @@ Assets apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4531,7 +4543,7 @@ The source code is fully available as open source software (OSS) under the AGPL-3.0 license - The source code is fully available as open source software (OSS) under the AGPL-3.0 license + De broncode is volledig beschikbaar als open source software (OSS) onder de AGPL-3.0-licentie apps/client/src/app/pages/about/overview/about-overview-page.html 16 @@ -4603,7 +4615,7 @@ this is projected to increase to - this is projected to increase to + zal dit naar verwachting stijgen tot apps/client/src/app/pages/portfolio/fire/fire-page.html 147 @@ -4655,7 +4667,7 @@ Job ID - Job ID + Opdracht ID apps/client/src/app/components/admin-jobs/admin-jobs.html 34 @@ -4718,7 +4730,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -4739,7 +4751,7 @@ for - for + voor apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 128 @@ -4763,7 +4775,7 @@ Could not parse scraper configuration - Could not parse scraper configuration + De scraperconfiguratie kon niet worden geparseerd apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 509 @@ -4807,7 +4819,7 @@ Edit access - Edit access + Toegang bewerken apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 11 @@ -4879,7 +4891,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges + Krijg toegang tot meer dan 80.000+ tickers van meer dan 50 beurzen apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 84 @@ -5063,7 +5075,7 @@ less than - less than + minder dan apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 129 @@ -5353,7 +5365,7 @@ Ghostfolio Status - Ghostfolio Status + Ghostfolio Status apps/client/src/app/pages/about/overview/about-overview-page.html 62 @@ -5361,7 +5373,7 @@ with your university e-mail address - with your university e-mail address + met uw universitaire e-mailadres apps/client/src/app/pages/pricing/pricing-page.html 348 @@ -5381,7 +5393,7 @@ and a safe withdrawal rate (SWR) of - and a safe withdrawal rate (SWR) of + en een veilige opnameratio (SWR) van apps/client/src/app/pages/portfolio/fire/fire-page.html 108 @@ -5432,7 +5444,7 @@ Kosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5532,7 +5544,7 @@ Lidmaatschap apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5545,7 +5557,7 @@ Request it - Request it + Aanvragen apps/client/src/app/pages/pricing/pricing-page.html 344 @@ -5601,7 +5613,7 @@ , - , + , apps/client/src/app/pages/portfolio/fire/fire-page.html 145 @@ -5617,7 +5629,7 @@ per month - per month + per maand apps/client/src/app/pages/portfolio/fire/fire-page.html 94 @@ -5688,7 +5700,7 @@ Oeps! Ophalen van historische data is mislukt. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5720,7 +5732,7 @@ Contant Saldo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5740,7 +5752,7 @@ Wilt u dit rekeningsaldo echt verwijderen? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5809,7 +5821,7 @@ Argentina - Argentina + Argentinië libs/ui/src/lib/i18n.ts 78 @@ -5865,7 +5877,7 @@ here - here + hier apps/client/src/app/pages/pricing/pricing-page.html 347 @@ -5873,10 +5885,10 @@ Close Holding - Close Holding + Sluit Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5916,7 +5928,7 @@ Week tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5928,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5936,7 +5948,7 @@ Maand tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5948,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5956,7 +5968,7 @@ Jaar tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6004,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6016,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6254,7 +6266,7 @@ Include in - Include in + Opnemen in apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 374 @@ -6329,7 +6341,7 @@ Wilt u uw persoonlijke belegginngsstrategie verfijnen? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6538,7 +6550,7 @@ View Holding - View Holding + Bekijk Holding libs/ui/src/lib/activities-table/activities-table.component.html 450 @@ -6682,7 +6694,7 @@ Oops! Could not update access. - Oops! Could not update access. + Oops! Kan de toegang niet updaten. apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts 178 @@ -6690,7 +6702,7 @@ , based on your total assets of - , based on your total assets of + opnemen, dit is gebaseerd op uw totale vermogen van apps/client/src/app/pages/portfolio/fire/fire-page.html 96 @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6806,10 +6822,10 @@ Role - Role + Rol apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -6846,7 +6862,7 @@ If you plan to open an account at - If you plan to open an account at + Als u van plan bent een rekening te openen bij apps/client/src/app/pages/pricing/pricing-page.html 312 @@ -6878,7 +6894,7 @@ send an e-mail to - send an e-mail to + stuur een e-mail naar apps/client/src/app/pages/about/overview/about-overview-page.html 87 @@ -6950,7 +6966,7 @@ , assuming a - , assuming a + , uitgaande van apps/client/src/app/pages/portfolio/fire/fire-page.html 174 @@ -7038,7 +7054,7 @@ Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. - Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. + Ghostfolio is een gebruiksvriendelijke applicatie voor vermogensbeheer waarmee particulieren hun aandelen, ETF's of cryptovaluta kunnen volgen en weloverwogen, datagestuurde beleggingsbeslissingen kunnen nemen. apps/client/src/app/pages/about/overview/about-overview-page.html 10 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7368,7 +7384,7 @@ Change with currency effect - Change with currency effect + Verandering met valuta-effect apps/client/src/app/pages/portfolio/analysis/analysis-page.html 116 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,16 +7515,16 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 The project has been initiated by - The project has been initiated by + Het project is geïnitieerd door apps/client/src/app/pages/about/overview/about-overview-page.html 40 @@ -7532,7 +7548,7 @@ Total amount - Total amount + Totaal bedrag apps/client/src/app/pages/portfolio/analysis/analysis-page.html 95 @@ -7607,7 +7623,7 @@ Beveiligingstoken apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,15 +7635,15 @@ Wilt u echt een nieuw beveiligingstoken voor deze gebruiker aanmaken? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 Find account, holding or page... - Find account, holding or page... + Vindt een account, holding of pagina... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,7 +7888,7 @@ 150 - + Fee Ratio Vergoedingsverhouding @@ -7880,17 +7896,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + De kosten overschrijden ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + De kosten bedragen maximaal ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8048,7 +8064,7 @@ Current month - Current month + Huidige maand apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 195 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8233,7 +8249,7 @@ If you encounter a bug, would like to suggest an improvement or a new feature, please join the Ghostfolio Slack community, post to @ghostfolio_ - If you encounter a bug, would like to suggest an improvement or a new feature, please join the Ghostfolio Slack community, post to @ghostfolio_ + Als je een bug tegenkomt, een verbetering wilt voorstellen of een nieuwe functie wilt toevoegen, word dan lid van de Ghostfolio Slack-community. Stuur een bericht naar @ghostfolio_ apps/client/src/app/pages/about/overview/about-overview-page.html 69 @@ -8276,7 +8292,7 @@ Beheer activaprofiel apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8357,7 +8373,7 @@ Liquidity - Liquidity + Liquiditeit apps/client/src/app/pages/i18n/i18n-page.html 70 @@ -8365,7 +8381,7 @@ Buying Power - Buying Power + Koopkracht apps/client/src/app/pages/i18n/i18n-page.html 71 @@ -8373,7 +8389,7 @@ Your buying power is below ${thresholdMin} ${baseCurrency} - Your buying power is below ${thresholdMin} ${baseCurrency} + Uw koopkracht ligt onder ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 73 @@ -8381,7 +8397,7 @@ Your buying power is 0 ${baseCurrency} - Your buying power is 0 ${baseCurrency} + Uw koopkracht is 0 ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 77 @@ -8389,7 +8405,7 @@ Your buying power exceeds ${thresholdMin} ${baseCurrency} - Your buying power exceeds ${thresholdMin} ${baseCurrency} + Uw koopkracht overschrijdt ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 80 @@ -8693,10 +8709,10 @@ Registration Date - Registration Date + Registratiedatum apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index a94a76d2f..bc8b948cd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -379,7 +379,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -435,7 +435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -455,15 +455,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -549,6 +549,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -571,7 +575,7 @@ Czy na pewno chcesz usunąć to konto? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -611,7 +615,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -707,7 +711,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -747,7 +751,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -779,7 +783,7 @@ Filtruj według... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -819,7 +823,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -855,7 +859,7 @@ Ups! Nie udało się sparsować danych historycznych. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -879,7 +883,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -911,7 +915,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -931,7 +935,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -987,7 +991,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1031,7 +1035,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1311,7 +1315,7 @@ Czy na pewno chcesz usunąć tego użytkownika? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1347,7 +1351,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1503,7 +1507,7 @@ Zarządzaj Aktywnościami apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1655,7 +1659,7 @@ Całkowita Kwota apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1767,7 +1771,7 @@ Bezwzględne Osiągi Brutto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1779,7 +1783,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1787,7 +1791,7 @@ Bezwzględne Osiągi Netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1799,7 +1803,7 @@ Osiągi Netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1811,7 +1815,7 @@ Suma Aktywów apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1819,7 +1823,7 @@ Aktywa apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -1827,7 +1831,7 @@ Siła Nabywcza apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1835,7 +1839,7 @@ Wykluczone z Analizy apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1843,7 +1847,7 @@ Pasywa (Zobowiązania Finansowe) apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -1855,7 +1859,7 @@ Wartość Netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1863,7 +1867,7 @@ Osiągi w Ujęciu Rocznym apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1899,7 +1903,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1915,7 +1919,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -2095,7 +2099,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2107,7 +2111,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2119,7 +2123,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2131,7 +2135,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2151,7 +2155,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2415,7 +2419,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -2607,7 +2611,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -2699,7 +2703,7 @@ Dane Rynkowe apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -2751,11 +2755,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2899,7 +2903,7 @@ Ponieważ jesteś już zalogowany, nie możesz uzyskać dostępu do konta demo. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3071,7 +3075,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -3147,7 +3151,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3615,7 +3619,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -3639,7 +3643,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -3659,7 +3663,7 @@ Czy na pewno chcesz usunąć te aktywności? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3727,7 +3731,7 @@ Zaktualizuj Saldo Gotówkowe apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3735,7 +3739,7 @@ Cena Jednostkowa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3975,7 +3979,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -3999,7 +4003,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -4007,7 +4011,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -4019,7 +4023,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -4031,7 +4035,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -4091,7 +4095,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -4099,7 +4103,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4123,7 +4127,7 @@ Depozyt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4447,7 +4451,7 @@ Kontynenty apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -4463,7 +4467,7 @@ Ghostfolio umożliwia śledzenie wartości swojego majątku. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -4824,7 +4828,7 @@ Członkostwo apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -4940,7 +4944,7 @@ Czy na pewno chcesz usunąć tę działalność? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -5044,11 +5048,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5060,7 +5064,7 @@ Oszczędności libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5088,7 +5092,7 @@ Pokaż wszystko libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -5140,7 +5144,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5172,7 +5176,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5216,7 +5220,7 @@ Fundusz Rezerwowy apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -5292,7 +5296,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -5303,6 +5307,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Świadczenia Emerytalne @@ -5420,7 +5432,7 @@ Opłata apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5464,7 +5476,7 @@ Gotówka apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -5512,7 +5524,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -5680,7 +5692,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -5688,11 +5700,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -5720,7 +5732,7 @@ Salda Gotówkowe apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5740,7 +5752,7 @@ Czy na pewno chcesz usunąć saldo tego konta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5876,7 +5888,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5916,7 +5928,7 @@ Dotychczasowy tydzień libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5928,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5936,7 +5948,7 @@ Od początku miesiąca libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5948,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5956,7 +5968,7 @@ Od początku roku libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6004,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6016,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6329,7 +6341,7 @@ Chcesz udoskonalić swoją osobistą strategię inwestycyjną? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6809,7 +6825,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Token bezpieczeństwa apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Czy napewno chcesz wygenerować nowy token bezpieczeństwa dla tego użytkownika? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,25 +7888,25 @@ 150 - + Fee Ratio - Stosunek opłat + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Zarządzaj profilem aktywów apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 2bcd7c401..e49f13b96 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -142,7 +142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -234,15 +234,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -328,6 +328,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -350,7 +354,7 @@ Pretende realmente eliminar esta conta? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -370,7 +374,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -490,7 +494,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -526,7 +530,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -566,7 +570,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -710,7 +714,7 @@ Deseja realmente excluir este utilizador? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -746,7 +750,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -878,7 +882,7 @@ Gerir Atividades apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -938,7 +942,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -946,7 +950,7 @@ Valor Total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1058,7 +1062,7 @@ Desempenho Bruto Absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1066,7 +1070,7 @@ Desempenho Líquido Absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1078,7 +1082,7 @@ Desempenho Líquido apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1090,7 +1094,7 @@ Ativos Totais apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1098,7 +1102,7 @@ Poder de Compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1106,7 +1110,7 @@ Excluído da Análise apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1114,7 +1118,7 @@ Valor Líquido apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1122,7 +1126,7 @@ Desempenho Anual apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1158,7 +1162,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1198,7 +1202,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -1218,7 +1222,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1258,7 +1262,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1286,7 +1290,7 @@ Mostrar tudo libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -1298,7 +1302,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1310,7 +1314,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1322,7 +1326,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1334,7 +1338,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1354,7 +1358,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1666,7 +1670,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -1718,7 +1722,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -1886,7 +1890,7 @@ Como já tem sessão iniciada, não pode aceder à conta de demonstração. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1950,11 +1954,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1994,7 +1998,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -2022,7 +2026,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -2046,7 +2050,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -2118,7 +2122,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -2126,7 +2130,7 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2146,7 +2150,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2282,7 +2286,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -2306,7 +2310,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -2314,7 +2318,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -2326,7 +2330,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -2338,7 +2342,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -2482,7 +2486,7 @@ Continentes apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -2498,7 +2502,7 @@ O Ghostfolio permite-lhe estar a par e gerir a sua riqueza. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -2526,7 +2530,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -2698,7 +2702,7 @@ Deseja realmente eliminar esta atividade? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -2750,11 +2754,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2766,7 +2770,7 @@ Poupanças libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2810,7 +2814,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2826,7 +2830,7 @@ Fundo de Emergência apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -2846,7 +2850,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -2894,7 +2898,7 @@ Dinheiro apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -2942,7 +2946,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -3074,7 +3078,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -3082,11 +3086,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -3130,7 +3134,7 @@ Dados de Mercado apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3170,7 +3174,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3194,7 +3198,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3202,7 +3206,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3242,7 +3246,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3337,6 +3341,14 @@ 22 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Provisão de Reforma @@ -3634,7 +3646,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -3798,7 +3810,7 @@ Deseja mesmo eliminar estas atividades? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3890,7 +3902,7 @@ Atualizar saldo em Dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4070,7 +4082,7 @@ Responsabilidades apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -4486,7 +4498,7 @@ Ativos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -4718,7 +4730,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -5432,7 +5444,7 @@ Taxa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5532,7 +5544,7 @@ Associação apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5688,7 +5700,7 @@ Ops! Não foi possível analisar os dados históricos. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5720,7 +5732,7 @@ Saldos de caixa apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5740,7 +5752,7 @@ Você realmente deseja excluir o saldo desta conta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5876,7 +5888,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5916,7 +5928,7 @@ Semana até agora libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5928,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5936,7 +5948,7 @@ Do mês até a data libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5948,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5956,7 +5968,7 @@ No acumulado do ano libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6004,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6016,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6329,7 +6341,7 @@ Você gostaria de refinar seu estratégia de investimento pessoal? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6809,7 +6825,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Security token apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Do you really want to generate a new security token for this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,7 +7888,7 @@ 150 - + Fee Ratio Fee Ratio @@ -7880,17 +7896,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Gerenciar perfil de ativos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 421ef3855..abe33aa80 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -339,7 +339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -395,7 +395,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -415,15 +415,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -509,6 +509,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -531,7 +535,7 @@ Bu hesabı silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -551,7 +555,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -671,7 +675,7 @@ Tarih apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -711,7 +715,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -735,7 +739,7 @@ Filtrele... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -775,7 +779,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -843,7 +847,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -863,7 +867,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -919,7 +923,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -947,7 +951,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1179,7 +1183,7 @@ Bu kullanıcıyı silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1215,7 +1219,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1371,7 +1375,7 @@ İşlemleri Yönet apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1523,7 +1527,7 @@ Toplam Tutar apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1635,7 +1639,7 @@ Toplam Brüt Performans apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1643,7 +1647,7 @@ Toplam Net Performans apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1655,7 +1659,7 @@ Net Performans apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1667,7 +1671,7 @@ Toplam Varlıklar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1675,7 +1679,7 @@ Varlıklar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -1683,7 +1687,7 @@ Alım Limiti apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1691,7 +1695,7 @@ Analize Dahil Edilmemiştir. apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1699,7 +1703,7 @@ Yükümlülükler apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -1711,7 +1715,7 @@ Toplam Varlık apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1719,7 +1723,7 @@ Yıllıklandırılmış Performans apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1755,7 +1759,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1775,7 +1779,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1783,7 +1787,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1963,7 +1967,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1975,7 +1979,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1987,7 +1991,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1999,7 +2003,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2019,7 +2023,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2203,7 +2207,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -2263,7 +2267,7 @@ Piyasa Verileri apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -2315,11 +2319,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2463,7 +2467,7 @@ Oturum açmış olduğunuz için demo hesabına erişemezsiniz. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2647,7 +2651,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -2723,7 +2727,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3115,7 +3119,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -3139,7 +3143,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -3159,7 +3163,7 @@ Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3203,7 +3207,7 @@ Nakit Bakiyesini Güncelle apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3211,7 +3215,7 @@ Birim Fiyat apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3367,7 +3371,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -3459,7 +3463,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -3483,7 +3487,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -3491,7 +3495,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -3503,7 +3507,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -3515,7 +3519,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -3575,7 +3579,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3583,7 +3587,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3607,7 +3611,7 @@ Para Yatırma libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -3931,7 +3935,7 @@ Kıtalar apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -3947,7 +3951,7 @@ Ghostfolio, varlıklarınızı takip etmenizi sağlar. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -4568,7 +4572,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -4664,7 +4668,7 @@ TBu işlemi silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -4740,11 +4744,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -4756,7 +4760,7 @@ Tasarruflar libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -4784,7 +4788,7 @@ Tümünü göster libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -4836,7 +4840,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -4868,7 +4872,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -4912,7 +4916,7 @@ Acil Durum Fonu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -4988,7 +4992,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -4999,6 +5003,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Yaşlılık Provizyonu @@ -5144,7 +5156,7 @@ Nakit apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -5192,7 +5204,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -5324,7 +5336,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -5332,11 +5344,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -5440,7 +5452,7 @@ Ücret apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5532,7 +5544,7 @@ Üyelik apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -5688,7 +5700,7 @@ Hay Allah! Geçmiş veriler ayrıştırılamadı. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -5720,7 +5732,7 @@ Nakit Bakiyeleri apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -5740,7 +5752,7 @@ Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5876,7 +5888,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5916,7 +5928,7 @@ Hafta içi libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5928,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5936,7 +5948,7 @@ Ay içi libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5948,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5956,7 +5968,7 @@ Yıl içi libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6004,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6016,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6329,7 +6341,7 @@ Senin özel yatırım stratejinizi iyileştirmek ister misin? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6745,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6753,7 +6765,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6791,13 +6803,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6809,7 +6825,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7101,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7117,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7215,7 +7231,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7323,11 +7339,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Güvenlik belirteci apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Bu kullanıcı için yeni bir güvenlik belirteci oluşturmak istediğinize emin misiniz? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,25 +7888,25 @@ 150 - + Fee Ratio - Ücret Oranı + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 2fc389030..95ad50c7c 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -419,7 +419,7 @@ Баланс готівки apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -471,7 +471,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -527,7 +527,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -547,15 +547,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -641,6 +641,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -663,7 +667,7 @@ Ви дійсно хочете видалити цей обліковий запис? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -731,7 +735,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -847,7 +851,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -871,7 +875,7 @@ Фільтрувати за... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -927,7 +931,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -1043,7 +1047,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -1063,7 +1067,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -1155,7 +1159,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1207,7 +1211,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1607,7 +1611,7 @@ Ви дійсно хочете видалити цього користувача? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1619,7 +1623,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1631,7 +1635,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -1851,7 +1855,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1879,7 +1883,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1903,7 +1907,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1943,7 +1947,7 @@ Керування діяльністю apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -2095,7 +2099,7 @@ Загальна сума apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -2187,7 +2191,7 @@ Абсолютний валовий дохід apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -2195,7 +2199,7 @@ Абсолютний чистий прибуток apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -2207,7 +2211,7 @@ Чистий прибуток apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -2219,7 +2223,7 @@ Загальні активи apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -2227,7 +2231,7 @@ Активи apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -2235,7 +2239,7 @@ Купівельна спроможність apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -2243,7 +2247,7 @@ Виключено з аналізу apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -2251,7 +2255,7 @@ Зобов’язання apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -2263,7 +2267,7 @@ Чиста вартість apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -2271,7 +2275,7 @@ Річна доходність apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -2315,11 +2319,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -2551,7 +2555,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2563,7 +2567,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2575,7 +2579,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2587,7 +2591,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2607,7 +2611,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2663,7 +2667,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -3211,7 +3215,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -3311,7 +3315,7 @@ Ринкові дані apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -3363,11 +3367,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -3519,7 +3523,7 @@ Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3716,7 +3720,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -3792,7 +3796,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -4276,7 +4280,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -4300,7 +4304,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -4380,7 +4384,7 @@ Оновити баланс готівки apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4388,7 +4392,7 @@ Дата apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -4408,7 +4412,7 @@ Ціна за одиницю apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4572,7 +4576,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -4664,7 +4668,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -4688,7 +4692,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -4696,7 +4700,7 @@ Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -4708,7 +4712,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -4720,7 +4724,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -4796,7 +4800,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -4804,7 +4808,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4868,7 +4872,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5248,7 +5252,7 @@ Континенти apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -5256,7 +5260,7 @@ Чи хотіли б ви удосконалити вашу особисту інвестиційну стратегію? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -5272,7 +5276,7 @@ Ghostfolio надає можливість вам стежити за вашим багатством. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -5312,7 +5316,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -5328,7 +5332,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -6003,7 +6007,7 @@ Членство apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -6071,7 +6075,7 @@ Ви дійсно хочете видалити цей рахунок? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -6135,7 +6139,7 @@ Ви дійсно хочете видалити ці дії? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -6143,7 +6147,7 @@ Ви дійсно хочете видалити цю активність? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -6151,7 +6155,7 @@ Тиждень до дати libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6163,7 +6167,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6171,7 +6175,7 @@ Місяць до дати libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -6183,7 +6187,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -6191,7 +6195,7 @@ Рік до дати libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6211,7 +6215,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6223,7 +6227,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6371,7 +6375,7 @@ Депозит libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -6383,11 +6387,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -6399,7 +6403,7 @@ Заощадження libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -6415,7 +6419,7 @@ Упс! Не вдалося отримати історичні дані. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -6443,7 +6447,7 @@ Показати все libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -6495,7 +6499,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -6527,7 +6531,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -6583,7 +6587,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6591,7 +6595,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6637,13 +6641,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6679,7 +6687,7 @@ Резервний фонд apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -6747,7 +6755,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -6766,6 +6774,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision Пенсійне накопичення @@ -6863,7 +6879,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -6899,7 +6915,7 @@ Комісія apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -6943,7 +6959,7 @@ Готівка apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -6999,7 +7015,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -7339,7 +7355,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -7347,11 +7363,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -7479,7 +7495,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7499,11 +7515,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7607,7 +7623,7 @@ Security token apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7619,7 +7635,7 @@ Do you really want to generate a new security token for this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7627,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7872,7 +7888,7 @@ 150 - + Fee Ratio Fee Ratio @@ -7880,17 +7896,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8063,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8276,7 +8292,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8696,7 +8712,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index a6907698d..b6a54edfe 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -312,7 +312,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -416,7 +416,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -435,15 +435,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -527,6 +527,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -548,7 +552,7 @@ Do you really want to delete this account? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -585,7 +589,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -670,7 +674,7 @@ Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -708,7 +712,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -736,7 +740,7 @@ Filter by... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -773,7 +777,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -819,7 +823,7 @@ Oops! Could not parse historical data. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -848,7 +852,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -878,7 +882,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -897,7 +901,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -948,7 +952,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -988,7 +992,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1236,7 +1240,7 @@ Do you really want to delete this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1269,7 +1273,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1412,7 +1416,7 @@ Manage Activities apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1548,7 +1552,7 @@ Total Amount apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1653,7 +1657,7 @@ Absolute Gross Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1664,14 +1668,14 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 Absolute Net Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1682,7 +1686,7 @@ Net Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1693,35 +1697,35 @@ Total Assets apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 Assets apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 Buying Power apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 Excluded from Analysis apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 Liabilities apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -1732,14 +1736,14 @@ Net Worth apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 Annualized Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1771,7 +1775,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1786,7 +1790,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -1954,7 +1958,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1965,7 +1969,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1976,7 +1980,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1987,7 +1991,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2005,7 +2009,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2240,7 +2244,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -2418,7 +2422,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -2501,7 +2505,7 @@ Market Data apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -2550,11 +2554,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2694,7 +2698,7 @@ As you are already logged in, you cannot access the demo account. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2850,7 +2854,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -2923,7 +2927,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3344,7 +3348,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -3368,7 +3372,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -3387,7 +3391,7 @@ Do you really want to delete these activities? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3447,14 +3451,14 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3669,7 +3673,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -3691,14 +3695,14 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 Latest activities apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -3709,7 +3713,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -3720,7 +3724,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -3774,7 +3778,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -3782,7 +3786,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3804,7 +3808,7 @@ Deposit libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4095,7 +4099,7 @@ Continents apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -4109,7 +4113,7 @@ Ghostfolio empowers you to keep track of your wealth. apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -4448,7 +4452,7 @@ Membership apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -4509,7 +4513,7 @@ Do you really want to delete this account balance? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -4559,7 +4563,7 @@ Do you really want to delete this activity? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -4665,11 +4669,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -4680,7 +4684,7 @@ Savings libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -4706,7 +4710,7 @@ Show all libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -4755,7 +4759,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -4786,7 +4790,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -4825,7 +4829,7 @@ Emergency Fund apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -4893,7 +4897,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -4903,6 +4907,13 @@ 27 + + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision @@ -5002,7 +5013,7 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5042,7 +5053,7 @@ Cash apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -5085,7 +5096,7 @@ Authentication apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -5233,7 +5244,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -5241,11 +5252,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -5348,7 +5359,7 @@ Close Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5406,21 +5417,21 @@ Year to date libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 Week to date libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 Month to date libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5431,7 +5442,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5442,7 +5453,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5486,7 +5497,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -5497,7 +5508,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -5773,7 +5784,7 @@ Would you like to refine your personal investment strategy? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6114,7 +6125,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6122,7 +6133,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6133,7 +6144,7 @@ Role apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -6187,13 +6198,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6471,7 +6486,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -6498,7 +6513,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -6588,7 +6603,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -6673,11 +6688,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -6811,7 +6826,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -6830,11 +6845,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -6925,21 +6940,21 @@ Do you really want to generate a new security token for this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 Security token apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7140,22 +7155,22 @@ 150 - + Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -7311,7 +7326,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -7499,7 +7514,7 @@ Manage Asset Profile apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -7868,7 +7883,7 @@ Registration Date apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 7ec9d85a0..ac81eebc7 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -336,7 +336,7 @@ 现金余额 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 148 + 146 @@ -388,7 +388,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -444,7 +444,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -464,15 +464,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -558,6 +558,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 78 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 22 + libs/ui/src/lib/account-balances/account-balances.component.html 80 @@ -580,7 +584,7 @@ 您确定要删除此账户吗? libs/ui/src/lib/accounts-table/accounts-table.component.ts - 150 + 148 @@ -620,7 +624,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -716,7 +720,7 @@ 日期 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -756,7 +760,7 @@ apps/client/src/app/pages/public/public-page.html - 96 + 95 @@ -788,7 +792,7 @@ 过滤... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 385 + 390 @@ -828,7 +832,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + 40 @@ -864,7 +868,7 @@ 哎呀!无法解析历史数据。 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + 284 @@ -888,7 +892,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + 67 @@ -920,7 +924,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 53 + 72 @@ -940,7 +944,7 @@ apps/client/src/app/pages/public/public-page.html - 114 + 113 @@ -996,7 +1000,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1040,7 +1044,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1320,7 +1324,7 @@ 您真的要删除该用户吗? apps/client/src/app/components/admin-users/admin-users.component.ts - 215 + 218 @@ -1356,7 +1360,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 89 + 108 @@ -1512,7 +1516,7 @@ 管理活动 apps/client/src/app/components/home-holdings/home-holdings.html - 67 + 65 @@ -1664,7 +1668,7 @@ 总金额 apps/client/src/app/components/investment-chart/investment-chart.component.ts - 143 + 146 @@ -1776,7 +1780,7 @@ 绝对总业绩 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 73 + 77 @@ -1788,7 +1792,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 88 + 92 @@ -1796,7 +1800,7 @@ 绝对净绩效 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 107 + 111 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1808,7 +1812,7 @@ 净绩效 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 123 + 127 apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1820,7 +1824,7 @@ 总资产 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 149 + 153 @@ -1828,7 +1832,7 @@ 资产 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 226 + 233 @@ -1836,7 +1840,7 @@ 购买力 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 241 + 248 @@ -1844,7 +1848,7 @@ 从分析中排除 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 267 + 274 @@ -1852,7 +1856,7 @@ 负债 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 295 + 302 apps/client/src/app/pages/features/features-page.html @@ -1864,7 +1868,7 @@ 净值 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 317 + 324 @@ -1872,7 +1876,7 @@ 年化业绩 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 331 + 338 @@ -1908,7 +1912,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1924,7 +1928,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 451 + 450 @@ -2104,7 +2108,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2116,7 +2120,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2128,7 +2132,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2140,7 +2144,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2160,7 +2164,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2424,7 +2428,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 11 + 30 @@ -2616,7 +2620,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 66 + 85 apps/client/src/app/pages/accounts/accounts-page.html @@ -2708,7 +2712,7 @@ 市场数据 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 398 + 397 libs/common/src/lib/routes/routes.ts @@ -2760,11 +2764,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2908,7 +2912,7 @@ 由于您已经登录,因此无法访问模拟帐户。 apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3080,7 +3084,7 @@ apps/client/src/app/pages/public/public-page.html - 242 + 241 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -3156,7 +3160,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3632,7 +3636,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + 113 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -3656,7 +3660,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 75 + 94 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -3676,7 +3680,7 @@ 您确定要删除这些活动吗? libs/ui/src/lib/activities-table/activities-table.component.ts - 278 + 282 @@ -3744,7 +3748,7 @@ 更新现金余额 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3752,7 +3756,7 @@ 单价 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3992,7 +3996,7 @@ apps/client/src/app/pages/public/public-page.html - 151 + 150 @@ -4016,7 +4020,7 @@ apps/client/src/app/pages/public/public-page.html - 168 + 167 @@ -4024,7 +4028,7 @@ 最新活动 apps/client/src/app/pages/public/public-page.html - 211 + 210 @@ -4036,7 +4040,7 @@ apps/client/src/app/pages/public/public-page.html - 177 + 176 @@ -4048,7 +4052,7 @@ apps/client/src/app/pages/public/public-page.html - 186 + 185 @@ -4108,7 +4112,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 365 + 372 apps/client/src/app/pages/features/features-page.html @@ -4116,7 +4120,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4140,7 +4144,7 @@ 存款 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4464,7 +4468,7 @@ 大陆 apps/client/src/app/pages/public/public-page.html - 132 + 131 @@ -4480,7 +4484,7 @@ Ghostfolio 使您能够跟踪您的财富。 apps/client/src/app/pages/public/public-page.html - 238 + 237 @@ -4853,7 +4857,7 @@ 会员资格 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 48 + 67 libs/common/src/lib/routes/routes.ts @@ -4921,7 +4925,7 @@ 您确实要删除该帐户余额吗? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -4977,7 +4981,7 @@ 您确实要删除此活动吗? libs/ui/src/lib/activities-table/activities-table.component.ts - 288 + 292 @@ -5097,11 +5101,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 352 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5113,7 +5117,7 @@ 储蓄 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5141,7 +5145,7 @@ 显示所有 libs/ui/src/lib/holdings-table/holdings-table.component.html - 216 + 212 @@ -5193,7 +5197,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5225,7 +5229,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5269,7 +5273,7 @@ 应急基金 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 164 + 168 apps/client/src/app/pages/features/features-page.html @@ -5345,7 +5349,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 437 + 449 @@ -5356,6 +5360,14 @@ 27 + + No Activities + No Activities + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 146 + + Retirement Provision 退休金 @@ -5465,7 +5477,7 @@ 费用 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5509,7 +5521,7 @@ 现金 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 212 + 219 libs/ui/src/lib/i18n.ts @@ -5557,7 +5569,7 @@ 认证 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 35 + 54 @@ -5725,7 +5737,7 @@ apps/client/src/app/pages/public/public-page.html - 196 + 195 libs/ui/src/lib/benchmark/benchmark.component.html @@ -5733,11 +5745,11 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 439 + 451 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 452 + 465 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -5853,7 +5865,7 @@ 关闭持仓 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 442 + 441 @@ -5917,7 +5929,7 @@ 今年迄今为止 libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5925,7 +5937,7 @@ 本周至今 libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5933,7 +5945,7 @@ 本月至今 libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5945,7 +5957,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5957,7 +5969,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6005,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6017,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6330,7 +6342,7 @@ 您想 优化 您的 个人投资策略吗? apps/client/src/app/pages/public/public-page.html - 234 + 233 @@ -6746,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6754,7 +6766,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + 47 libs/ui/src/lib/i18n.ts @@ -6792,13 +6804,17 @@ apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 68 + + apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html + 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 107 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6810,7 +6826,7 @@ 角色 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 14 + 33 @@ -7102,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7118,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7216,7 +7232,7 @@ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 98 + 117 @@ -7324,11 +7340,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + 49 @@ -7480,7 +7496,7 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 @@ -7500,11 +7516,11 @@ libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 368 + 375 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 381 + 388 @@ -7608,7 +7624,7 @@ 安全令牌 apps/client/src/app/components/admin-users/admin-users.component.ts - 236 + 239 apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -7620,7 +7636,7 @@ 您确定要为此用户生成新的安全令牌吗? apps/client/src/app/components/admin-users/admin-users.component.ts - 241 + 244 @@ -7628,7 +7644,7 @@ 查找账户、持仓或页面... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7873,7 +7889,7 @@ 150 - + Fee Ratio 费率 @@ -7881,17 +7897,17 @@ 152 - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%) + + The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + 费用已超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%) + + The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + 费用未超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8064,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8277,7 +8293,7 @@ 管理资产概况 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 466 + 465 @@ -8697,7 +8713,7 @@ 注册日期 apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html - 26 + 45 diff --git a/libs/common/src/lib/calculation-helper.ts b/libs/common/src/lib/calculation-helper.ts index d67384a30..76b38f9b2 100644 --- a/libs/common/src/lib/calculation-helper.ts +++ b/libs/common/src/lib/calculation-helper.ts @@ -9,7 +9,7 @@ import { subDays, subYears } from 'date-fns'; -import { isNumber } from 'lodash'; +import { isFinite, isNumber } from 'lodash'; import { resetHours } from './helper'; import { DateRange } from './types'; @@ -28,7 +28,7 @@ export function getAnnualizedPerformancePercent({ exponent ); - if (!isNaN(growthFactor)) { + if (isFinite(growthFactor)) { return new Big(growthFactor).minus(1); } } diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index b558ccc42..5da0e0122 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -80,6 +80,11 @@ export const DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT = 30000; export const DEFAULT_REDACTED_PATHS = [ 'accounts[*].balance', + 'accounts[*].balanceInBaseCurrency', + 'accounts[*].comment', + 'accounts[*].dividendInBaseCurrency', + 'accounts[*].interestInBaseCurrency', + 'accounts[*].value', 'accounts[*].valueInBaseCurrency', 'activities[*].account.balance', 'activities[*].account.comment', @@ -199,6 +204,7 @@ export const PROPERTY_BETTER_UPTIME_MONITOR_ID = 'BETTER_UPTIME_MONITOR_ID'; export const PROPERTY_COUNTRIES_OF_SUBSCRIBERS = 'COUNTRIES_OF_SUBSCRIBERS'; export const PROPERTY_COUPONS = 'COUPONS'; export const PROPERTY_CURRENCIES = 'CURRENCIES'; +export const PROPERTY_CUSTOM_CRYPTOCURRENCIES = 'CUSTOM_CRYPTOCURRENCIES'; export const PROPERTY_DATA_SOURCE_MAPPING = 'DATA_SOURCE_MAPPING'; export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS = 'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS'; diff --git a/libs/common/src/lib/dtos/create-asset-profile.dto.ts b/libs/common/src/lib/dtos/create-asset-profile.dto.ts index 80d45ba42..85ad73cc0 100644 --- a/libs/common/src/lib/dtos/create-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile.dto.ts @@ -5,7 +5,6 @@ import { IsArray, IsBoolean, IsEnum, - IsObject, IsOptional, IsString, IsUrl @@ -66,10 +65,6 @@ export class CreateAssetProfileDto { @IsString() name?: string; - @IsObject() - @IsOptional() - scraperConfiguration?: Prisma.InputJsonObject; - @IsArray() @IsOptional() sectors?: Prisma.InputJsonArray; @@ -77,12 +72,6 @@ export class CreateAssetProfileDto { @IsString() symbol: string; - @IsObject() - @IsOptional() - symbolMapping?: { - [dataProvider: string]: string; - }; - @IsOptional() @IsUrl({ protocols: ['https'], diff --git a/libs/common/src/lib/interfaces/activities.interface.ts b/libs/common/src/lib/interfaces/activities.interface.ts index 8c88cc2cf..b9e64984b 100644 --- a/libs/common/src/lib/interfaces/activities.interface.ts +++ b/libs/common/src/lib/interfaces/activities.interface.ts @@ -8,7 +8,7 @@ export interface Activity extends Order { error?: ActivityError; feeInAssetProfileCurrency: number; feeInBaseCurrency: number; - SymbolProfile?: EnhancedSymbolProfile; + SymbolProfile: EnhancedSymbolProfile; tagIds?: string[]; tags?: Tag[]; unitPriceInAssetProfileCurrency: number; diff --git a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts index c0c3802d8..0698004d5 100644 --- a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts @@ -7,4 +7,5 @@ export interface PortfolioPerformance { netPerformancePercentageWithCurrencyEffect: number; netPerformanceWithCurrencyEffect: number; totalInvestment: number; + totalInvestmentValueWithCurrencyEffect: number; } diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index ccf94dcf7..79fbf8707 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -6,7 +6,10 @@ export interface PortfolioSummary extends PortfolioPerformance { annualizedPerformancePercent: number; annualizedPerformancePercentWithCurrencyEffect: number; cash: number; + + /** @deprecated use totalInvestmentValueWithCurrencyEffect instead */ committedFunds: number; + dateOfFirstActivity: Date; dividendInBaseCurrency: number; emergencyFund: { diff --git a/libs/common/src/lib/interfaces/responses/export-response.interface.ts b/libs/common/src/lib/interfaces/responses/export-response.interface.ts index 8b1697ca4..fa592faf2 100644 --- a/libs/common/src/lib/interfaces/responses/export-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/export-response.interface.ts @@ -27,7 +27,12 @@ export interface ExportResponse { > & { dataSource: DataSource; date: string; symbol: string })[]; assetProfiles: (Omit< SymbolProfile, - 'createdAt' | 'id' | 'updatedAt' | 'userId' + | 'createdAt' + | 'id' + | 'scraperConfiguration' + | 'symbolMapping' + | 'updatedAt' + | 'userId' > & { marketData: MarketData[]; })[]; diff --git a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts index bdef3e169..60a76d468 100644 --- a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts +++ b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts @@ -9,7 +9,7 @@ export interface XRayRulesSettings { EconomicMarketClusterRiskDevelopedMarkets?: RuleSettings; EconomicMarketClusterRiskEmergingMarkets?: RuleSettings; EmergencyFundSetup?: RuleSettings; - FeeRatioInitialInvestment?: RuleSettings; + FeeRatioTotalInvestmentVolume?: RuleSettings; RegionalMarketClusterRiskAsiaPacific?: RuleSettings; RegionalMarketClusterRiskEmergingMarkets?: RuleSettings; RegionalMarketClusterRiskEurope?: RuleSettings; diff --git a/libs/common/src/lib/types/market-data-preset.type.ts b/libs/common/src/lib/types/market-data-preset.type.ts index 0dbf914fa..2622feac3 100644 --- a/libs/common/src/lib/types/market-data-preset.type.ts +++ b/libs/common/src/lib/types/market-data-preset.type.ts @@ -2,4 +2,5 @@ export type MarketDataPreset = | 'BENCHMARKS' | 'CURRENCIES' | 'ETF_WITHOUT_COUNTRIES' - | 'ETF_WITHOUT_SECTORS'; + | 'ETF_WITHOUT_SECTORS' + | 'NO_ACTIVITIES'; diff --git a/libs/ui/src/lib/account-balances/account-balances.component.html b/libs/ui/src/lib/account-balances/account-balances.component.html index caef922ed..29037a985 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.html +++ b/libs/ui/src/lib/account-balances/account-balances.component.html @@ -12,7 +12,7 @@ Date - + @@ -37,7 +37,7 @@
    @@ -48,7 +48,7 @@
    - {{ accountCurrency }} + {{ accountCurrency() }}
    @@ -58,7 +58,7 @@ - @if (showActions) { + @if (showActions()) {
    -@if (isLoading) { +@if (isLoading()) { (); - @Output() accountToUpdate = new EventEmitter(); - @Output() transferBalance = new EventEmitter(); - - @ViewChild(MatSort) sort: MatSort; - - public dataSource = new MatTableDataSource(); - public displayedColumns = []; - public isLoading = true; - public routeQueryParams: Subscription; - - private unsubscribeSubject = new Subject(); - - public constructor( - private notificationService: NotificationService, - private router: Router - ) { - addIcons({ - arrowRedoOutline, - createOutline, - documentTextOutline, - ellipsisHorizontal, - eyeOffOutline, - trashOutline, - walletOutline - }); - } - - public ngOnChanges() { - this.displayedColumns = ['status', 'account', 'platform']; - - if (this.showActivitiesCount) { - this.displayedColumns.push('activitiesCount'); +export class GfAccountsTableComponent { + public readonly accounts = input.required(); + public readonly activitiesCount = input(); + public readonly baseCurrency = input(); + public readonly hasPermissionToOpenDetails = input(true); + public readonly locale = input(getLocale()); + public readonly showActions = input(); + public readonly showActivitiesCount = input(true); + public readonly showAllocationInPercentage = input(); + public readonly showBalance = input(true); + public readonly showFooter = input(true); + public readonly showValue = input(true); + public readonly showValueInBaseCurrency = input(false); + public readonly totalBalanceInBaseCurrency = input(); + public readonly totalValueInBaseCurrency = input(); + + public readonly accountDeleted = output(); + public readonly accountToUpdate = output(); + public readonly transferBalance = output(); + + public readonly sort = viewChild.required(MatSort); + + protected readonly dataSource = new MatTableDataSource([]); + + protected readonly displayedColumns = computed(() => { + const columns = ['status', 'account', 'platform']; + + if (this.showActivitiesCount()) { + columns.push('activitiesCount'); } - if (this.showBalance) { - this.displayedColumns.push('balance'); + if (this.showBalance()) { + columns.push('balance'); } - if (this.showValue) { - this.displayedColumns.push('value'); + if (this.showValue()) { + columns.push('value'); } - this.displayedColumns.push('currency'); + columns.push('currency'); - if (this.showValueInBaseCurrency) { - this.displayedColumns.push('valueInBaseCurrency'); + if (this.showValueInBaseCurrency()) { + columns.push('valueInBaseCurrency'); } - if (this.showAllocationInPercentage) { - this.displayedColumns.push('allocation'); + if (this.showAllocationInPercentage()) { + columns.push('allocation'); } - this.displayedColumns.push('comment'); + columns.push('comment'); - if (this.showActions) { - this.displayedColumns.push('actions'); + if (this.showActions()) { + columns.push('actions'); } - this.isLoading = true; + return columns; + }); + + protected readonly isLoading = computed(() => !this.accounts()); + + private readonly notificationService = inject(NotificationService); + private readonly router = inject(Router); + + public constructor() { + addIcons({ + arrowRedoOutline, + createOutline, + documentTextOutline, + ellipsisHorizontal, + eyeOffOutline, + trashOutline, + walletOutline + }); - this.dataSource = new MatTableDataSource(this.accounts); this.dataSource.sortingDataAccessor = getLowercase; - this.dataSource.sort = this.sort; + // Reactive data update + effect(() => { + this.dataSource.data = this.accounts(); + }); - if (this.accounts) { - this.isLoading = false; - } + // Reactive view connection + effect(() => { + this.dataSource.sort = this.sort(); + }); } - public onDeleteAccount(aId: string) { + protected onDeleteAccount(aId: string) { this.notificationService.confirm({ confirmFn: () => { this.accountDeleted.emit(aId); @@ -151,30 +149,25 @@ export class GfAccountsTableComponent implements OnChanges, OnDestroy { }); } - public onOpenAccountDetailDialog(accountId: string) { - if (this.hasPermissionToOpenDetails) { + protected onOpenAccountDetailDialog(accountId: string) { + if (this.hasPermissionToOpenDetails()) { this.router.navigate([], { queryParams: { accountId, accountDetailDialog: true } }); } } - public onOpenComment(aComment: string) { + protected onOpenComment(aComment: string) { this.notificationService.alert({ title: aComment }); } - public onTransferBalance() { + protected onTransferBalance() { this.transferBalance.emit(); } - public onUpdateAccount(aAccount: Account) { + protected onUpdateAccount(aAccount: Account) { this.accountToUpdate.emit(aAccount); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } diff --git a/libs/ui/src/lib/activities-filter/activities-filter.component.html b/libs/ui/src/lib/activities-filter/activities-filter.component.html index fd22ed351..d87ce16ce 100644 --- a/libs/ui/src/lib/activities-filter/activities-filter.component.html +++ b/libs/ui/src/lib/activities-filter/activities-filter.component.html @@ -10,7 +10,7 @@ [removable]="true" (removed)="onRemoveFilter(filter)" > - {{ filter.label | gfSymbol }} + {{ filter.label ?? '' | gfSymbol }} @@ -23,7 +23,7 @@ [matAutocomplete]="autocomplete" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes" - [placeholder]="placeholder" + [placeholder]="placeholder()" (matChipInputTokenEnd)="onAddFilter($event)" /> @@ -35,7 +35,7 @@ @for (filter of filterGroup.filters; track filter) { - {{ filter.label | gfSymbol }} + {{ filter.label ?? '' | gfSymbol }} } @@ -46,7 +46,7 @@ disabled mat-icon-button matSuffix - [ngClass]="{ 'd-none': !isLoading }" + [ngClass]="{ 'd-none': !isLoading() }" > diff --git a/libs/ui/src/lib/activities-filter/activities-filter.component.ts b/libs/ui/src/lib/activities-filter/activities-filter.component.ts index 34f883c67..25fad683d 100644 --- a/libs/ui/src/lib/activities-filter/activities-filter.component.ts +++ b/libs/ui/src/lib/activities-filter/activities-filter.component.ts @@ -8,14 +8,14 @@ import { ChangeDetectionStrategy, Component, ElementRef, - EventEmitter, Input, OnChanges, - OnDestroy, - Output, SimpleChanges, - ViewChild + ViewChild, + input, + output } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { MatAutocomplete, @@ -30,8 +30,7 @@ import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { closeOutline, searchOutline } from 'ionicons/icons'; import { groupBy } from 'lodash'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { BehaviorSubject } from 'rxjs'; import { translate } from '../i18n'; @@ -53,28 +52,26 @@ import { translate } from '../i18n'; styleUrls: ['./activities-filter.component.scss'], templateUrl: './activities-filter.component.html' }) -export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { +export class GfActivitiesFilterComponent implements OnChanges { @Input() allFilters: Filter[]; - @Input() isLoading: boolean; - @Input() placeholder: string; - @Output() valueChanged = new EventEmitter(); + @ViewChild('autocomplete') protected matAutocomplete: MatAutocomplete; + @ViewChild('searchInput') protected searchInput: ElementRef; - @ViewChild('autocomplete') matAutocomplete: MatAutocomplete; - @ViewChild('searchInput') searchInput: ElementRef; + public readonly isLoading = input.required(); + public readonly placeholder = input.required(); + public readonly valueChanged = output(); - public filterGroups$: Subject = new BehaviorSubject([]); - public filters$: Subject = new BehaviorSubject([]); - public filters: Observable = this.filters$.asObservable(); - public searchControl = new FormControl(undefined); - public selectedFilters: Filter[] = []; - public separatorKeysCodes: number[] = [ENTER, COMMA]; - - private unsubscribeSubject = new Subject(); + protected readonly filterGroups$ = new BehaviorSubject([]); + protected readonly searchControl = new FormControl( + null + ); + protected selectedFilters: Filter[] = []; + protected readonly separatorKeysCodes: number[] = [ENTER, COMMA]; public constructor() { this.searchControl.valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed()) .subscribe((filterOrSearchTerm) => { if (filterOrSearchTerm) { const searchTerm = @@ -97,41 +94,39 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { } } - public onAddFilter({ input, value }: MatChipInputEvent) { + public onAddFilter({ chipInput, value }: MatChipInputEvent) { if (value?.trim()) { this.updateFilters(); } // Reset the input value - if (input) { - input.value = ''; + if (chipInput.inputElement) { + chipInput.inputElement.value = ''; } - this.searchControl.setValue(undefined); + this.searchControl.setValue(null); } public onRemoveFilter(aFilter: Filter) { - this.selectedFilters = this.selectedFilters.filter((filter) => { - return filter.id !== aFilter.id; + this.selectedFilters = this.selectedFilters.filter(({ id }) => { + return id !== aFilter.id; }); this.updateFilters(); } public onSelectFilter(event: MatAutocompleteSelectedEvent) { - this.selectedFilters.push( - this.allFilters.find((filter) => { - return filter.id === event.option.value; - }) - ); + const filter = this.allFilters.find(({ id }) => { + return id === event.option.value; + }); + + if (filter) { + this.selectedFilters.push(filter); + } + this.updateFilters(); this.searchInput.nativeElement.value = ''; - this.searchControl.setValue(undefined); - } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); + this.searchControl.setValue(null); } private getGroupedFilters(searchTerm?: string) { @@ -139,23 +134,23 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { this.allFilters .filter((filter) => { // Filter selected filters - return !this.selectedFilters.some((selectedFilter) => { - return selectedFilter.id === filter.id; + return !this.selectedFilters.some(({ id }) => { + return id === filter.id; }); }) .filter((filter) => { if (searchTerm) { // Filter by search term return filter.label - .toLowerCase() + ?.toLowerCase() .includes(searchTerm.toLowerCase()); } return filter; }) - .sort((a, b) => a.label?.localeCompare(b.label)), - (filter) => { - return filter.type; + .sort((a, b) => (a.label ?? '').localeCompare(b.label ?? '')), + ({ type }) => { + return type; } ); diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index b8e1882d4..bdb1e6373 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -21,7 +21,7 @@
  • @@ -201,7 +201,7 @@ @@ -225,7 +225,7 @@ @@ -249,7 +249,7 @@ @@ -272,7 +272,7 @@ @@ -304,7 +304,7 @@ @@ -388,7 +388,7 @@ @if (hasPermissionToCreateActivity) {