diff --git a/CHANGELOG.md b/CHANGELOG.md index 216ab0b13..48c34eab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,44 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.34.0 - 2024-01-02 + +### Added + +- Extended the assistant by a date range selector (experimental) +- Added a button to test the scraper configuration in the asset profile details dialog of the admin control + +### Changed + +- Improved the style of the _Top 3_ and _Bottom 3_ performers on the analysis page +- Upgraded `Nx` from version `17.2.7` to `17.2.8` + +### Fixed + +- Improved the time-weighted performance calculation for `1D` +- Improved the tabs on iOS (_Add to Home Screen_) + +## 2.33.0 - 2023-12-31 + +### Added + +- Added support to edit the currency of asset profiles with `MANUAL` data source in the asset profile details dialog of the admin control panel +- Added a hint for the community languages in the user settings ### Changed - Changed the performance calculation to a time-weighted approach +- Normalized the benchmark by currency in the benchmark comparator +- Increased the timeout to load currencies in the exchange rate data service +- Exposed the environment variable `REQUEST_TIMEOUT` - Used the `HasPermission` annotation in endpoints +- Improved the language localization for German (`de`) +- Upgraded `ng-extract-i18n-merge` from version `2.9.0` to `2.9.1` +- Upgraded `Nx` from version `17.2.5` to `17.2.7` + +### Fixed + +- Improved the handling of derived currencies (`USX`) ## 2.32.0 - 2023-12-26 @@ -309,7 +341,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Changed the users table in the admin control panel to an `@angular/material` data table -- Improved the styling of the membership status +- Improved the style of the membership status ### Fixed @@ -1484,7 +1516,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the styling in the admin control panel +- Improved the style in the admin control panel - Removed the _Google Play_ badge from the landing page - Upgraded `eslint` dependencies @@ -2239,7 +2271,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Simplified the initialization of the exchange rate service - Improved the orders query for `assetClass` with symbol profile overrides -- Improved the styling of the benchmarks in the markets overview +- Improved the style of the benchmarks in the markets overview ### Todo @@ -2573,7 +2605,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Fixed a styling issue in the benchmark component on mobile +- Fixed a style issue in the benchmark component on mobile ## 1.152.0 - 26.05.2022 @@ -3180,7 +3212,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Fixed the styling in the footer row of the activities table +- Fixed the style in the footer row of the activities table ## 1.106.0 - 23.01.2022 @@ -3948,7 +3980,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the wording for the _Restricted View_: _Presenter View_ -- Improved the styling of the tables +- Improved the style of the tables - Ignored cash assets in the allocation chart by sector, continent and country ### Fixed @@ -4151,8 +4183,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the styling of the current pricing plan -- Improved the styling of the transaction type badge +- Improved the style of the current pricing plan +- Improved the style of the transaction type badge - Set the public _Stripe_ key dynamically - Upgraded `angular-material-css-vars` from version `2.0.0` to `2.1.0` @@ -4512,7 +4544,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the users table styling of the admin control panel +- Improved the users table style of the admin control panel - Improved the background colors in the dark mode ## 0.92.0 - 25.04.2021 @@ -4536,7 +4568,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the styling of the rules in the _X-ray_ section +- Improved the style of the rules in the _X-ray_ section ## 0.90.0 - 22.04.2021 @@ -4731,7 +4763,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the alignment of the _Why Ghostfolio?_ section -- Improved the styling of the _Fear & Greed Index_ (market mood) +- Improved the style of the _Fear & Greed Index_ (market mood) ## 0.73.0 - 31.03.2021 @@ -4777,7 +4809,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the styling in the _X-ray_ section +- Improved the style in the _X-ray_ section ## 0.70.0 - 27.03.2021 @@ -5072,7 +5104,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Only show relevant data in the position detail dialog -- Improved the performance chart styling in Safari +- Improved the performance chart style in Safari ## 0.40.0 - 01.03.2021 diff --git a/README.md b/README.md index 0a2053e43..dc5f2d25f 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ We provide official container images hosted on [Docker Hub](https://hub.docker.c | `REDIS_HOST` | | The host where _Redis_ is running | | `REDIS_PASSWORD` | | The password of _Redis_ | | `REDIS_PORT` | | The port where _Redis_ is running | +| `REQUEST_TIMEOUT` | `2000` | The timeout of network requests to data providers in milliseconds | ### Run with Docker Compose @@ -165,7 +166,7 @@ Ghostfolio is available for various home server systems, including [Runtipi](htt #### Debug -Run `yarn watch:server` and click _Launch Program_ in [Visual Studio Code](https://code.visualstudio.com) +Run `yarn watch:server` and click _Debug API_ in [Visual Studio Code](https://code.visualstudio.com) #### Serve @@ -278,6 +279,6 @@ If you like to support this project, get [**Ghostfolio Premium**](https://ghostf ## License -© 2021 - 2023 [Ghostfolio](https://ghostfol.io) +© 2021 - 2024 [Ghostfolio](https://ghostfol.io) Licensed under the [AGPLv3 License](https://www.gnu.org/licenses/agpl-3.0.html). diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 1888699ba..8729d4b7f 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,6 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/data-gathering.service'; +import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { @@ -19,7 +20,7 @@ import { AdminMarketDataDetails, EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; -import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { permissions } from '@ghostfolio/common/permissions'; import type { MarketDataPreset, RequestWithUser @@ -31,6 +32,7 @@ import { Get, HttpException, Inject, + Logger, Param, Patch, Post, @@ -56,6 +58,7 @@ export class AdminController { private readonly adminService: AdminService, private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, + private readonly manualService: ManualService, private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -179,8 +182,8 @@ export class AdminController { } @Get('market-data') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @HasPermission(permissions.accessAdminControl) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async getMarketData( @Query('assetSubClasses') filterByAssetSubClasses?: string, @Query('presetId') presetId?: MarketDataPreset, @@ -215,6 +218,30 @@ export class AdminController { return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); } + @HasPermission(permissions.accessAdminControl) + @Post('market-data/:dataSource/:symbol/test') + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async testMarketData( + @Body() data: { scraperConfiguration: string }, + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ): Promise<{ price: number }> { + try { + const { headers, selector, url } = JSON.parse(data.scraperConfiguration); + const price = await this.manualService.test({ headers, selector, url }); + + if (price) { + return { price }; + } + + throw new Error('Could not parse the current market price'); + } catch (error) { + Logger.error(error); + + throw new HttpException(error.message, StatusCodes.BAD_REQUEST); + } + } + @HasPermission(permissions.accessAdminControl) @Post('market-data/:dataSource/:symbol') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 0de847bd8..55146809e 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -328,6 +328,7 @@ export class AdminService { assetClass, assetSubClass, comment, + currency, dataSource, name, tags, @@ -340,6 +341,7 @@ export class AdminService { assetClass, assetSubClass, comment, + currency, dataSource, name, tags, diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts index ee801cab5..d1e3c0df6 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -20,6 +20,10 @@ export class UpdateAssetProfileDto { @IsOptional() comment?: string; + @IsString() + @IsOptional() + currency?: string; + @IsString() @IsOptional() name?: string; diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/benchmark/benchmark.controller.ts index 0fd47f4e2..ebee6ab8e 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/benchmark/benchmark.controller.ts @@ -8,6 +8,7 @@ import type { UniqueAsset } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; +import type { RequestWithUser } from '@ghostfolio/common/types'; import { Body, Controller, @@ -20,6 +21,7 @@ import { UseGuards, UseInterceptors } from '@nestjs/common'; +import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; import { DataSource } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; @@ -28,7 +30,10 @@ import { BenchmarkService } from './benchmark.service'; @Controller('benchmark') export class BenchmarkController { - public constructor(private readonly benchmarkService: BenchmarkService) {} + public constructor( + private readonly benchmarkService: BenchmarkService, + @Inject(REQUEST) private readonly request: RequestWithUser + ) {} @HasPermission(permissions.accessAdminControl) @Post() @@ -103,11 +108,13 @@ export class BenchmarkController { @Param('symbol') symbol: string ): Promise { const startDate = new Date(startDateString); + const userCurrency = this.request.user.Settings.settings.baseCurrency; return this.benchmarkService.getMarketDataBySymbol({ dataSource, startDate, - symbol + symbol, + userCurrency }); } } diff --git a/apps/api/src/app/benchmark/benchmark.module.ts b/apps/api/src/app/benchmark/benchmark.module.ts index c2cc3fbb5..b3a4d8f2e 100644 --- a/apps/api/src/app/benchmark/benchmark.module.ts +++ b/apps/api/src/app/benchmark/benchmark.module.ts @@ -2,6 +2,7 @@ import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.mo import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; @@ -17,6 +18,7 @@ import { BenchmarkService } from './benchmark.service'; imports: [ ConfigurationModule, DataProviderModule, + ExchangeRateDataModule, MarketDataModule, PrismaModule, PropertyModule, diff --git a/apps/api/src/app/benchmark/benchmark.service.spec.ts b/apps/api/src/app/benchmark/benchmark.service.spec.ts index 5fa2c3e7b..42a29e6d1 100644 --- a/apps/api/src/app/benchmark/benchmark.service.spec.ts +++ b/apps/api/src/app/benchmark/benchmark.service.spec.ts @@ -11,6 +11,7 @@ describe('BenchmarkService', () => { null, null, null, + null, null ); }); diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index cbd5e7e1f..75cb52ea6 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -1,6 +1,7 @@ import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.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 { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; @@ -11,7 +12,8 @@ import { } from '@ghostfolio/common/config'; import { DATE_FORMAT, - calculateBenchmarkTrend + calculateBenchmarkTrend, + parseDate } from '@ghostfolio/common/helper'; import { Benchmark, @@ -21,11 +23,11 @@ import { UniqueAsset } from '@ghostfolio/common/interfaces'; import { BenchmarkTrend } from '@ghostfolio/common/types'; -import { Injectable } from '@nestjs/common'; +import { Injectable, Logger } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; import Big from 'big.js'; -import { format, subDays } from 'date-fns'; -import { uniqBy } from 'lodash'; +import { format, isSameDay, subDays } from 'date-fns'; +import { isNumber, last, uniqBy } from 'lodash'; import ms from 'ms'; @Injectable() @@ -34,6 +36,7 @@ export class BenchmarkService { public constructor( private readonly dataProviderService: DataProviderService, + private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, private readonly prismaService: PrismaService, private readonly propertyService: PropertyService, @@ -203,8 +206,14 @@ export class BenchmarkService { public async getMarketDataBySymbol({ dataSource, startDate, - symbol - }: { startDate: Date } & UniqueAsset): Promise { + symbol, + userCurrency + }: { + startDate: Date; + userCurrency: string; + } & UniqueAsset): Promise { + const marketData: { date: string; value: number }[] = []; + const [currentSymbolItem, marketDataItems] = await Promise.all([ this.symbolService.get({ dataGatheringItem: { @@ -226,44 +235,101 @@ export class BenchmarkService { }) ]); + const exchangeRates = await this.exchangeRateDataService.getExchangeRates({ + currencyFrom: currentSymbolItem.currency, + currencyTo: userCurrency, + dates: marketDataItems.map(({ date }) => { + return date; + }) + }); + + const exchangeRateAtStartDate = + exchangeRates[format(startDate, DATE_FORMAT)]; + + if (!exchangeRateAtStartDate) { + Logger.error( + `No exchange rate has been found for ${ + currentSymbolItem.currency + }${userCurrency} at ${format(startDate, DATE_FORMAT)}`, + 'BenchmarkService' + ); + + return { marketData }; + } + + const marketPriceAtStartDate = marketDataItems?.find(({ date }) => { + return isSameDay(date, startDate); + })?.marketPrice; + + if (!marketPriceAtStartDate) { + Logger.error( + `No historical market data has been found for ${symbol} (${dataSource}) at ${format( + startDate, + DATE_FORMAT + )}`, + 'BenchmarkService' + ); + + return { marketData }; + } + const step = Math.round( marketDataItems.length / Math.min(marketDataItems.length, MAX_CHART_ITEMS) ); - const marketPriceAtStartDate = marketDataItems?.[0]?.marketPrice ?? 0; - const response = { - marketData: [ - ...marketDataItems - .filter((marketDataItem, index) => { - return index % step === 0; - }) - .map((marketDataItem) => { - return { - date: format(marketDataItem.date, DATE_FORMAT), - value: - marketPriceAtStartDate === 0 - ? 0 - : this.calculateChangeInPercentage( - marketPriceAtStartDate, - marketDataItem.marketPrice - ) * 100 - }; - }) - ] - }; + let i = 0; - if (currentSymbolItem?.marketPrice) { - response.marketData.push({ + for (let marketDataItem of marketDataItems) { + if (i % step !== 0) { + continue; + } + + const exchangeRate = + exchangeRates[format(marketDataItem.date, DATE_FORMAT)]; + + const exchangeRateFactor = + isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) + ? exchangeRate / exchangeRateAtStartDate + : 1; + + marketData.push({ + date: format(marketDataItem.date, DATE_FORMAT), + value: + marketPriceAtStartDate === 0 + ? 0 + : this.calculateChangeInPercentage( + marketPriceAtStartDate, + marketDataItem.marketPrice * exchangeRateFactor + ) * 100 + }); + } + + const includesToday = isSameDay( + parseDate(last(marketData).date), + new Date() + ); + + if (currentSymbolItem?.marketPrice && !includesToday) { + const exchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)]; + + const exchangeRateFactor = + isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) + ? exchangeRate / exchangeRateAtStartDate + : 1; + + marketData.push({ date: format(new Date(), DATE_FORMAT), value: this.calculateChangeInPercentage( marketPriceAtStartDate, - currentSymbolItem.marketPrice + currentSymbolItem.marketPrice * exchangeRateFactor ) * 100 }); } - return response; + return { + marketData + }; } public async addBenchmark({ diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 744e86c9c..a93070cd1 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -8,7 +8,6 @@ import { PropertyService } from '@ghostfolio/api/services/property/property.serv import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT, PROPERTY_BETTER_UPTIME_MONITOR_ID, PROPERTY_COUNTRIES_OF_SUBSCRIBERS, PROPERTY_DEMO_USER_ID, @@ -162,7 +161,7 @@ export class InfoService { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { pull_count } = await got( `https://hub.docker.com/v2/repositories/ghostfolio/ghostfolio`, @@ -187,7 +186,7 @@ export class InfoService { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { body } = await got('https://github.com/ghostfolio/ghostfolio', { // @ts-ignore @@ -214,7 +213,7 @@ export class InfoService { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { stargazers_count } = await got( `https://api.github.com/repos/ghostfolio/ghostfolio`, @@ -342,7 +341,7 @@ export class InfoService { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { data } = await got( `https://uptime.betterstack.com/api/v2/monitors/${monitorId}/sla?from=${format( diff --git a/apps/api/src/app/logo/logo.service.ts b/apps/api/src/app/logo/logo.service.ts index 80ae1d6a9..91aaa2cbc 100644 --- a/apps/api/src/app/logo/logo.service.ts +++ b/apps/api/src/app/logo/logo.service.ts @@ -1,5 +1,5 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { UniqueAsset } from '@ghostfolio/common/interfaces'; import { HttpException, Injectable } from '@nestjs/common'; import { DataSource } from '@prisma/client'; @@ -9,6 +9,7 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; @Injectable() export class LogoService { public constructor( + private readonly configurationService: ConfigurationService, private readonly symbolProfileService: SymbolProfileService ) {} @@ -46,7 +47,7 @@ export class LogoService { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); return got( `https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=${aUrl}&size=64`, diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 14a2fb87f..0cb379b25 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1125,26 +1125,45 @@ export class PortfolioService { return { hasErrors: currentPositions.hasErrors, - positions: positions.map((position) => { - return { - ...position, - assetClass: symbolProfileMap[position.symbol].assetClass, - assetSubClass: symbolProfileMap[position.symbol].assetSubClass, - averagePrice: new Big(position.averagePrice).toNumber(), - grossPerformance: position.grossPerformance?.toNumber() ?? null, - grossPerformancePercentage: - position.grossPerformancePercentage?.toNumber() ?? null, - investment: new Big(position.investment).toNumber(), - marketState: - dataProviderResponses[position.symbol]?.marketState ?? 'delayed', - name: symbolProfileMap[position.symbol].name, - netPerformance: position.netPerformance?.toNumber() ?? null, - tags: symbolProfileMap[position.symbol].tags, - netPerformancePercentage: - position.netPerformancePercentage?.toNumber() ?? null, - quantity: new Big(position.quantity).toNumber() - }; - }) + positions: positions.map( + ({ + averagePrice, + currency, + dataSource, + firstBuyDate, + investment, + grossPerformance, + grossPerformancePercentage, + netPerformance, + netPerformancePercentage, + quantity, + symbol, + transactionCount + }) => { + return { + currency, + dataSource, + firstBuyDate, + symbol, + transactionCount, + assetClass: symbolProfileMap[symbol].assetClass, + assetSubClass: symbolProfileMap[symbol].assetSubClass, + averagePrice: averagePrice.toNumber(), + grossPerformance: grossPerformance?.toNumber() ?? null, + grossPerformancePercentage: + grossPerformancePercentage?.toNumber() ?? null, + investment: investment.toNumber(), + marketState: + dataProviderResponses[symbol]?.marketState ?? 'delayed', + name: symbolProfileMap[symbol].name, + netPerformance: netPerformance?.toNumber() ?? null, + tags: symbolProfileMap[position.symbol].tags, + netPerformancePercentage: + netPerformancePercentage?.toNumber() ?? null, + quantity: quantity.toNumber() + }; + } + ) }; } diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index b355d5a20..5b76055c1 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -44,6 +44,7 @@ export class ConfigurationService { REDIS_HOST: str({ default: 'localhost' }), REDIS_PASSWORD: str({ default: '' }), REDIS_PORT: port({ default: 6379 }), + REQUEST_TIMEOUT: num({ default: 2000 }), ROOT_URL: str({ default: DEFAULT_ROOT_URL }), STRIPE_PUBLIC_KEY: str({ default: '' }), STRIPE_SECRET_KEY: str({ default: '' }), diff --git a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts index 2b03f519d..b40f35b36 100644 --- a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts +++ b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts @@ -5,7 +5,6 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { Granularity } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; @@ -107,7 +106,7 @@ export class AlphaVantageService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; diff --git a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts index a9eb44405..d2156ed3b 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -1,13 +1,11 @@ import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { - DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT -} from '@ghostfolio/common/config'; +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import { Granularity } from '@ghostfolio/common/types'; @@ -25,7 +23,9 @@ import got from 'got'; export class CoinGeckoService implements DataProviderInterface { private readonly URL = 'https://api.coingecko.com/api/v3'; - public constructor() {} + public constructor( + private readonly configurationService: ConfigurationService + ) {} public canHandle(symbol: string) { return true; @@ -47,7 +47,7 @@ export class CoinGeckoService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { name } = await got(`${this.URL}/coins/${aSymbol}`, { // @ts-ignore @@ -59,7 +59,9 @@ export class CoinGeckoService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'CoinGeckoService'); @@ -95,7 +97,7 @@ export class CoinGeckoService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { prices } = await got( `${ @@ -141,7 +143,7 @@ export class CoinGeckoService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; @@ -183,7 +185,9 @@ export class CoinGeckoService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'CoinGeckoService'); @@ -210,7 +214,7 @@ export class CoinGeckoService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { coins } = await got(`${this.URL}/search?query=${query}`, { // @ts-ignore @@ -231,7 +235,9 @@ export class CoinGeckoService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'CoinGeckoService'); diff --git a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts index dda30ba1a..5e4f01c22 100644 --- a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts @@ -1,6 +1,5 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { parseSymbol } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; @@ -15,7 +14,7 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface { ) {} public async enhance({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), response, symbol }: { diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index afd93e41b..252a0620d 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -1,5 +1,5 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { Country } from '@ghostfolio/common/interfaces/country.interface'; import { Sector } from '@ghostfolio/common/interfaces/sector.interface'; import { Injectable } from '@nestjs/common'; @@ -21,8 +21,12 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { 'Information Technology': 'Technology' }; + public constructor( + private readonly configurationService: ConfigurationService + ) {} + public async enhance({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), response, symbol }: { @@ -53,7 +57,7 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); return got( `${TrackinsightDataEnhancerService.baseUrl}/funds/${symbol.split( @@ -80,7 +84,7 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const holdings = await got( `${TrackinsightDataEnhancerService.baseUrl}/holdings/${symbol}.json`, @@ -95,7 +99,7 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); return got( `${TrackinsightDataEnhancerService.baseUrl}/holdings/${symbol.split( 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 8a8ab1f08..951a623d0 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 @@ -1,3 +1,4 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { YahooFinanceDataEnhancerService } from './yahoo-finance.service'; @@ -25,13 +26,16 @@ jest.mock( ); describe('YahooFinanceDataEnhancerService', () => { + let configurationService: ConfigurationService; let cryptocurrencyService: CryptocurrencyService; let yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService; beforeAll(async () => { + configurationService = new ConfigurationService(); cryptocurrencyService = new CryptocurrencyService(); yahooFinanceDataEnhancerService = new YahooFinanceDataEnhancerService( + configurationService, 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 67fc0a9c1..0ef622c42 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 @@ -1,10 +1,7 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; -import { - DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT, - UNKNOWN_KEY -} from '@ghostfolio/common/config'; +import { DEFAULT_CURRENCY, UNKNOWN_KEY } from '@ghostfolio/common/config'; import { isCurrency } from '@ghostfolio/common/helper'; import { Injectable, Logger } from '@nestjs/common'; import { @@ -22,6 +19,7 @@ import type { Price } from 'yahoo-finance2/dist/esm/src/modules/quoteSummary-ifa @Injectable() export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { public constructor( + private readonly configurationService: ConfigurationService, private readonly cryptocurrencyService: CryptocurrencyService ) {} @@ -76,7 +74,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { } public async enhance({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), response, symbol }: { diff --git a/apps/api/src/services/data-provider/data-provider.module.ts b/apps/api/src/services/data-provider/data-provider.module.ts index b3a219a50..e63ec0807 100644 --- a/apps/api/src/services/data-provider/data-provider.module.ts +++ b/apps/api/src/services/data-provider/data-provider.module.ts @@ -74,6 +74,6 @@ import { DataProviderService } from './data-provider.service'; }, YahooFinanceDataEnhancerService ], - exports: [DataProviderService, YahooFinanceService] + exports: [DataProviderService, ManualService, YahooFinanceService] }) export class DataProviderModule {} diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 448d54b25..76e8ce9c6 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -5,10 +5,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { - DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT -} from '@ghostfolio/common/config'; +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT, isCurrency } from '@ghostfolio/common/helper'; import { Granularity } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; @@ -82,7 +79,7 @@ export class EodHistoricalDataService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const response = await got( `${this.URL}/eod/${symbol}?api_token=${ @@ -132,7 +129,7 @@ export class EodHistoricalDataService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; @@ -194,7 +191,9 @@ export class EodHistoricalDataService implements DataProviderInterface { })?.currency; result[this.convertFromEodSymbol(code)] = { - currency: currency ?? DEFAULT_CURRENCY, + currency: + currency ?? + this.convertFromEodSymbol(code)?.replace(DEFAULT_CURRENCY, ''), dataSource: DataSource.EOD_HISTORICAL_DATA, marketPrice: close, marketState: isToday(new Date(timestamp * 1000)) ? 'open' : 'closed' @@ -208,7 +207,7 @@ export class EodHistoricalDataService implements DataProviderInterface { if (response[`${DEFAULT_CURRENCY}GBP`]) { response[`${DEFAULT_CURRENCY}GBp`] = { ...response[`${DEFAULT_CURRENCY}GBP`], - currency: `${DEFAULT_CURRENCY}GBp`, + currency: 'GBp', marketPrice: this.getConvertedValue({ symbol: `${DEFAULT_CURRENCY}GBp`, value: response[`${DEFAULT_CURRENCY}GBP`].marketPrice @@ -219,7 +218,7 @@ export class EodHistoricalDataService implements DataProviderInterface { if (response[`${DEFAULT_CURRENCY}ILS`]) { response[`${DEFAULT_CURRENCY}ILA`] = { ...response[`${DEFAULT_CURRENCY}ILS`], - currency: `${DEFAULT_CURRENCY}ILA`, + currency: 'ILA', marketPrice: this.getConvertedValue({ symbol: `${DEFAULT_CURRENCY}ILA`, value: response[`${DEFAULT_CURRENCY}ILS`].marketPrice @@ -227,12 +226,23 @@ export class EodHistoricalDataService implements DataProviderInterface { }; } + if (response[`${DEFAULT_CURRENCY}USX`]) { + response[`${DEFAULT_CURRENCY}USX`] = { + currency: 'USX', + dataSource: this.getName(), + marketPrice: new Big(1).mul(100).toNumber(), + marketState: 'open' + }; + } + return response; } catch (error) { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'EodHistoricalDataService'); @@ -359,7 +369,7 @@ export class EodHistoricalDataService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const response = await got( `${this.URL}/search/${aQuery}?api_token=${this.apiKey}`, @@ -391,7 +401,9 @@ export class EodHistoricalDataService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'EodHistoricalDataService'); diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 1c3db1520..e16093d3e 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -5,10 +5,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { - DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT -} from '@ghostfolio/common/config'; +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import { Granularity } from '@ghostfolio/common/types'; @@ -70,7 +67,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { historical } = await got( `${this.URL}/historical-price-full/${aSymbol}?apikey=${this.apiKey}`, @@ -114,7 +111,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; @@ -154,7 +151,9 @@ export class FinancialModelingPrepService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'FinancialModelingPrepService'); @@ -181,7 +180,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const result = await got( `${this.URL}/search?query=${query}&apikey=${this.apiKey}`, @@ -205,7 +204,9 @@ export class FinancialModelingPrepService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'FinancialModelingPrepService'); diff --git a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts index 6dc8dc80b..e753db3a3 100644 --- a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts +++ b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts @@ -7,7 +7,6 @@ import { } from '@ghostfolio/api/services/interfaces/interfaces'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { Granularity } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; @@ -101,7 +100,7 @@ export class GoogleSheetsService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; 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 5482b52ed..6addfc377 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -1,4 +1,5 @@ import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; import { IDataProviderHistoricalResponse, @@ -7,7 +8,6 @@ import { import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { BatchPrismaClient } from '@ghostfolio/common/chunkhelper'; -import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { DATE_FORMAT, extractNumberFromString, @@ -19,11 +19,12 @@ import { DataSource, SymbolProfile } from '@prisma/client'; import * as cheerio from 'cheerio'; import { isUUID } from 'class-validator'; import { addDays, format, isBefore } from 'date-fns'; -import got from 'got'; +import got, { Headers } from 'got'; @Injectable() export class ManualService implements DataProviderInterface { public constructor( + private readonly configurationService: ConfigurationService, private readonly prismaService: PrismaService, private readonly symbolProfileService: SymbolProfileService ) {} @@ -97,21 +98,7 @@ export class ManualService implements DataProviderInterface { return {}; } - const abortController = new AbortController(); - - setTimeout(() => { - abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); - - const { body } = await got(url, { - headers, - // @ts-ignore - signal: abortController.signal - }); - - const $ = cheerio.load(body); - - const value = extractNumberFromString($(selector).text()); + const value = await this.scrape({ headers, selector, url }); return { [symbol]: { @@ -135,7 +122,7 @@ export class ManualService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; @@ -240,4 +227,42 @@ export class ManualService implements DataProviderInterface { return { items }; } + + public async test(params: any) { + return this.scrape({ + headers: params.headers, + selector: params.selector, + url: params.url + }); + } + + private async scrape({ + headers = {}, + selector, + url + }: { + headers?: Headers; + selector: string; + url: string; + }): Promise { + try { + const abortController = new AbortController(); + + setTimeout(() => { + abortController.abort(); + }, this.configurationService.get('REQUEST_TIMEOUT')); + + const { body } = await got(url, { + headers, + // @ts-ignore + signal: abortController.signal + }); + + const $ = cheerio.load(body); + + return extractNumberFromString($(selector).first().text()); + } catch (error) { + throw error; + } + } } diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index 5c2df222c..ba746ebbe 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -5,10 +5,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { - DEFAULT_REQUEST_TIMEOUT, - ghostfolioFearAndGreedIndexSymbol -} from '@ghostfolio/common/config'; +import { ghostfolioFearAndGreedIndexSymbol } from '@ghostfolio/common/config'; import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper'; import { Granularity } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; @@ -88,7 +85,7 @@ export class RapidApiService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; @@ -146,7 +143,7 @@ export class RapidApiService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, DEFAULT_REQUEST_TIMEOUT); + }, this.configurationService.get('REQUEST_TIMEOUT')); const { fgi } = await got( `https://fear-and-greed-index.p.rapidapi.com/v1/fgi`, @@ -166,7 +163,9 @@ export class RapidApiService implements DataProviderInterface { let message = error; if (error?.code === 'ABORT_ERR') { - message = `RequestError: The operation was aborted because the request to the data provider took more than ${DEFAULT_REQUEST_TIMEOUT}ms`; + message = `RequestError: The operation was aborted because the request to the data provider took more than ${this.configurationService.get( + 'REQUEST_TIMEOUT' + )}ms`; } Logger.error(message, 'RapidApiService'); diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 96bffa7ea..2a972d176 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -1,4 +1,5 @@ import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; @@ -6,10 +7,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { - DEFAULT_CURRENCY, - DEFAULT_REQUEST_TIMEOUT -} from '@ghostfolio/common/config'; +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { Granularity } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; @@ -22,6 +20,7 @@ import { Quote } from 'yahoo-finance2/dist/esm/src/modules/quote'; @Injectable() export class YahooFinanceService implements DataProviderInterface { public constructor( + private readonly configurationService: ConfigurationService, private readonly cryptocurrencyService: CryptocurrencyService, private readonly yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService ) {} @@ -160,7 +159,7 @@ export class YahooFinanceService implements DataProviderInterface { } public async getQuotes({ - requestTimeout = DEFAULT_REQUEST_TIMEOUT, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbols }: { requestTimeout?: number; diff --git a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts index cf61786c9..5ddef02a5 100644 --- a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts @@ -11,6 +11,7 @@ import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper'; import { Injectable, Logger } from '@nestjs/common'; import { format, isToday } from 'date-fns'; import { isNumber, uniq } from 'lodash'; +import ms from 'ms'; @Injectable() export class ExchangeRateDataService { @@ -33,6 +34,125 @@ export class ExchangeRateDataService { return this.currencyPairs; } + public async getExchangeRates({ + currencyFrom, + currencyTo, + dates + }: { + currencyFrom: string; + currencyTo: string; + dates: Date[]; + }) { + let factors: { [dateString: string]: number } = {}; + + if (currencyFrom === currencyTo) { + for (const date of dates) { + factors[format(date, DATE_FORMAT)] = 1; + } + } else { + const dataSource = + this.dataProviderService.getDataSourceForExchangeRates(); + const symbol = `${currencyFrom}${currencyTo}`; + + const marketData = await this.marketDataService.getRange({ + dateQuery: { in: dates }, + uniqueAssets: [ + { + dataSource, + symbol + } + ] + }); + + if (marketData?.length > 0) { + for (const { date, marketPrice } of marketData) { + factors[format(date, DATE_FORMAT)] = marketPrice; + } + } else { + // Calculate indirectly via base currency + + let marketPriceBaseCurrencyFromCurrency: { + [dateString: string]: number; + } = {}; + let marketPriceBaseCurrencyToCurrency: { + [dateString: string]: number; + } = {}; + + try { + if (currencyFrom === DEFAULT_CURRENCY) { + for (const date of dates) { + marketPriceBaseCurrencyFromCurrency[format(date, DATE_FORMAT)] = + 1; + } + } else { + const marketData = await this.marketDataService.getRange({ + dateQuery: { in: dates }, + uniqueAssets: [ + { + dataSource, + symbol: `${DEFAULT_CURRENCY}${currencyFrom}` + } + ] + }); + + for (const { date, marketPrice } of marketData) { + marketPriceBaseCurrencyFromCurrency[format(date, DATE_FORMAT)] = + marketPrice; + } + } + } catch {} + + try { + if (currencyTo === DEFAULT_CURRENCY) { + for (const date of dates) { + marketPriceBaseCurrencyToCurrency[format(date, DATE_FORMAT)] = 1; + } + } else { + const marketData = await this.marketDataService.getRange({ + dateQuery: { + in: dates + }, + uniqueAssets: [ + { + dataSource, + symbol: `${DEFAULT_CURRENCY}${currencyTo}` + } + ] + }); + + for (const { date, marketPrice } of marketData) { + marketPriceBaseCurrencyToCurrency[format(date, DATE_FORMAT)] = + marketPrice; + } + } + } catch {} + + for (const date of dates) { + try { + const factor = + (1 / + marketPriceBaseCurrencyFromCurrency[ + format(date, DATE_FORMAT) + ]) * + marketPriceBaseCurrencyToCurrency[format(date, DATE_FORMAT)]; + + factors[format(date, DATE_FORMAT)] = factor; + } catch { + Logger.error( + `No exchange rate has been found for ${currencyFrom}${currencyTo} at ${format( + date, + DATE_FORMAT + )}`, + 'ExchangeRateDataService' + ); + } + } + } + } + + return factors; + } + public hasCurrencyPair(currency1: string, currency2: string) { return this.currencyPairs.some(({ symbol }) => { return ( @@ -75,7 +195,8 @@ export class ExchangeRateDataService { const quotes = await this.dataProviderService.getQuotes({ items: this.currencyPairs.map(({ dataSource, symbol }) => { return { dataSource, symbol }; - }) + }), + requestTimeout: ms('30 seconds') }); for (const symbol of Object.keys(quotes)) { diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index 9b10a3205..a410070a0 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -32,6 +32,7 @@ export interface Environment extends CleanedEnvAccessors { REDIS_HOST: string; REDIS_PASSWORD: string; REDIS_PORT: number; + REQUEST_TIMEOUT: number; ROOT_URL: string; STRIPE_PUBLIC_KEY: string; STRIPE_SECRET_KEY: string; diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 3747b07f3..f6e03b2db 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -96,6 +96,7 @@ export class SymbolProfileService { assetClass, assetSubClass, comment, + currency, dataSource, name, tags, @@ -108,6 +109,7 @@ export class SymbolProfileService { assetClass, assetSubClass, comment, + currency, name, tags, scraperConfiguration, diff --git a/apps/client/src/app/app.component.scss b/apps/client/src/app/app.component.scss index 2cc6d9a17..21d33e3c9 100644 --- a/apps/client/src/app/app.component.scss +++ b/apps/client/src/app/app.component.scss @@ -2,7 +2,7 @@ :host { display: block; - min-height: 100vh; + min-height: 100svh; &.has-info-message { header { @@ -30,7 +30,7 @@ } main { - min-height: calc(100vh - 2 * var(--mat-toolbar-standard-height)); + min-height: calc(100svh - 2 * var(--mat-toolbar-standard-height)); } } @@ -44,7 +44,7 @@ } main { - min-height: calc(100vh - var(--mat-toolbar-standard-height)); + min-height: calc(100svh - var(--mat-toolbar-standard-height)); } } 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 470354080..bc318d15a 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 @@ -17,6 +17,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, + Currency, UniqueAsset } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; @@ -58,6 +59,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { assetClass: new FormControl(undefined), assetSubClass: new FormControl(undefined), comment: '', + currency: '', historicalData: this.formBuilder.group({ csvString: '' }), @@ -71,6 +73,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public countries: { [code: string]: { name: string; value: number }; }; + public currencies: Currency[] = []; public isBenchmark = false; public marketDataDetails: MarketData[] = []; public sectors: { @@ -96,7 +99,13 @@ export class AssetProfileDialog implements OnDestroy, OnInit { ) {} public ngOnInit(): void { - this.benchmarks = this.dataService.fetchInfo().benchmarks; + const { benchmarks, currencies } = this.dataService.fetchInfo(); + + this.benchmarks = benchmarks; + this.currencies = currencies.map((currency) => ({ + label: currency, + value: currency + })); this.initialize(); } @@ -155,6 +164,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { assetSubClass: this.assetProfile.assetSubClass ?? null, comment: this.assetProfile?.comment ?? '', tags: this.assetProfile?.tags, + currency: this.assetProfile?.currency, historicalData: { csvString: AssetProfileDialog.HISTORICAL_DATA_TEMPLATE }, @@ -268,6 +278,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } catch {} const assetProfileData: UpdateAssetProfileDto = { + scraperConfiguration, + symbolMapping, assetClass: this.assetProfileForm.controls['assetClass'].value, assetSubClass: this.assetProfileForm.controls['assetSubClass'].value, comment: this.assetProfileForm.controls['comment'].value ?? null, @@ -275,6 +287,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { tags: this.assetProfileForm.controls['tags'].value, scraperConfiguration, symbolMapping + currency: (( + (this.assetProfileForm.controls['currency'].value) + ))?.value, + name: this.assetProfileForm.controls['name'].value }; this.adminService @@ -288,6 +304,34 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }); } + public onTestMarketData() { + this.adminService + .testMarketData({ + dataSource: this.data.dataSource, + scraperConfiguration: + this.assetProfileForm.controls['scraperConfiguration'].value, + symbol: this.data.symbol + }) + .pipe( + catchError(({ error }) => { + alert(`Error: ${error?.message}`); + return EMPTY; + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe(({ price }) => { + alert( + $localize`The current market price is` + + ' ' + + price + + ' ' + + (( + (this.assetProfileForm.controls['currency'].value) + ))?.value + ); + }); + } + public onUnsetBenchmark({ dataSource, symbol }: UniqueAsset) { this.dataService .deleteBenchmark({ dataSource, symbol }) 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 675e5b3b1..d10794609 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 @@ -184,6 +184,15 @@
+ + Currency + + +
+
Asset Class @@ -265,12 +274,24 @@
Scraper Configuration - +
+ + +
diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts index b99722928..cc8349655 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts @@ -10,6 +10,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { GfAdminMarketDataDetailModule } from '@ghostfolio/client/components/admin-market-data-detail/admin-market-data-detail.module'; +import { GfCurrencySelectorModule } from '@ghostfolio/ui/currency-selector/currency-selector.module'; import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart/portfolio-proportion-chart.module'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -23,6 +24,7 @@ import { MatChipsModule } from '@angular/material/chips'; CommonModule, FormsModule, GfAdminMarketDataDetailModule, + GfCurrencySelectorModule, GfPortfolioProportionChartModule, MatAutocompleteModule, MatChipsModule, diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 4d606f591..f078b5028 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -119,7 +119,11 @@ [matMenuTriggerRestoreFocus]="false" (menuOpened)="onOpenAssistant()" > - + @if (user?.settings?.isExperimentalFeatures) { + + } @else { + + } diff --git a/apps/client/src/app/components/header/header.component.scss b/apps/client/src/app/components/header/header.component.scss index 2e5b583c2..9a39cbdea 100644 --- a/apps/client/src/app/components/header/header.component.scss +++ b/apps/client/src/app/components/header/header.component.scss @@ -32,6 +32,10 @@ ion-icon { font-size: 1.5rem; + + &.rotate-90 { + transform: rotate(-90deg); + } } } diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index a1f65f244..5218e2870 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -19,8 +19,10 @@ import { SettingsStorageService } from '@ghostfolio/client/services/settings-storage.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; import { InfoItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { DateRange } from '@ghostfolio/common/types'; import { AssistantComponent } from '@ghostfolio/ui/assistant/assistant.component'; import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -88,7 +90,8 @@ export class HeaderComponent implements OnChanges { private impersonationStorageService: ImpersonationStorageService, private router: Router, private settingsStorageService: SettingsStorageService, - private tokenStorageService: TokenStorageService + private tokenStorageService: TokenStorageService, + private userService: UserService ) { this.impersonationStorageService .onChangeHasImpersonation() @@ -144,6 +147,20 @@ export class HeaderComponent implements OnChanges { window.location.reload(); } + public onDateRangeChange(dateRange: DateRange) { + this.dataService + .putUserSetting({ dateRange }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.userService.remove(); + + this.userService + .get() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + }); + } + public onMenuClosed() { this.isMenuOpen = false; } diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index 79828f6b7..d83f53f68 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -1,5 +1,5 @@
-
+
-
+
Language
+
+ If a translation is missing, kindly support us in extending it + here. +
diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.scss b/apps/client/src/app/components/user-account-settings/user-account-settings.scss index 1bcd1c65a..22555407a 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.scss +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.scss @@ -2,6 +2,15 @@ color: rgb(var(--dark-primary-text)); display: block; + a { + color: rgba(var(--palette-primary-500), 1); + font-weight: 500; + + &:hover { + color: rgba(var(--palette-primary-300), 1); + } + } + .hint-text { font-size: 90%; line-height: 1.2; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts index 9e153d173..760eb1f03 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts @@ -15,7 +15,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { DataService } from '@ghostfolio/client/services/data.service'; -import { Currency } from '@ghostfolio/common/interfaces/currency.interface'; +import { Currency } from '@ghostfolio/common/interfaces'; import { Platform } from '@prisma/client'; import { Observable, Subject } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html index ace412ce1..e94d21b8c 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -1,6 +1,6 @@

Analysis

-
+
- + [routerLink]="[]" + > +
+ {{ position.name }} +
+
+ +
+ + +
- + [routerLink]="[]" + > +
+ {{ position.name }} +
+
+ +
+ + +
(`/api/v1/tag/${aTag.id}`, aTag); } + + public testMarketData({ + dataSource, + scraperConfiguration, + symbol + }: UniqueAsset & UpdateAssetProfileDto['scraperConfiguration']) { + return this.http.post( + `/api/v1/admin/market-data/${dataSource}/${symbol}/test`, + { + scraperConfiguration + } + ); + } } diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index d22f4c030..ffa759f0d 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,5 +1,5 @@ { - "createdAt": "2023-11-30T00:00:00.000Z", + "createdAt": "2023-12-30T00:00:00.000Z", "data": [ { "name": "BoxyHQ", @@ -71,6 +71,11 @@ "description": "HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.", "href": "https://htmx.org" }, + { + "name": "Inbox Zero", + "description": "Inbox Zero makes it easy to clean up your inbox and reach inbox zero fast. It provides bulk newsletter unsubscribe, cold email blocking, email analytics, and AI automations.", + "href": "https://getinboxzero.com" + }, { "name": "Infisical", "description": "Open source, end-to-end encrypted platform that lets you securely manage secrets and configs across your team, devices, and infrastructure.", diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 3f6f209de..ad851897f 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -52,6 +52,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -156,6 +160,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -224,6 +232,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -260,6 +276,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -296,6 +316,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -448,6 +472,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -474,7 +502,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -518,7 +546,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -598,7 +626,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -606,7 +634,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -614,7 +642,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -622,7 +650,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -754,7 +782,7 @@ Benutzer apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -798,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -810,7 +838,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -830,7 +858,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -846,7 +874,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -862,7 +890,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -882,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1090,7 +1118,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1098,7 +1126,7 @@ Ich apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1106,7 +1134,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1114,7 +1142,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1130,7 +1158,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1146,7 +1174,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1174,7 +1202,7 @@ Einloggen apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1186,7 +1214,7 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1282,7 +1310,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1504,7 +1532,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1516,7 +1544,7 @@ Datenfehler melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1624,7 +1652,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -1824,7 +1852,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -1834,6 +1862,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -1904,7 +1936,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -1912,7 +1944,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -1920,7 +1952,7 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -1932,7 +1964,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -1940,7 +1972,7 @@ Benutzer ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2010,6 +2042,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -2018,6 +2054,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -2252,7 +2292,7 @@ Zeitstrahl der Investitionen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -2268,7 +2308,7 @@ Verlierer apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2394,6 +2434,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -2410,6 +2454,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2426,6 +2474,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2436,7 +2488,7 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2460,7 +2512,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2488,7 +2540,7 @@ Daten importieren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2496,7 +2548,7 @@ Der Import wurde abgeschlossen apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2626,6 +2678,10 @@ Draft Geplant + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -2636,12 +2692,20 @@ Aktivitäten importieren apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Aktivitäten exportieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -2654,6 +2718,14 @@ Export Drafts as ICS Geplante Aktivitäten als ICS exportieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -2666,6 +2738,10 @@ Clone Kopieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -2674,6 +2750,10 @@ Export Draft as ICS Geplante Aktivität als ICS exportieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -2682,6 +2762,10 @@ Do you really want to delete this activity? Möchtest du diese Aktivität wirklich löschen? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -2740,7 +2824,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2764,7 +2848,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -2776,7 +2860,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -2824,7 +2908,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -3048,7 +3132,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -3088,7 +3172,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -3096,7 +3180,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -3104,7 +3188,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -3112,7 +3196,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -3120,7 +3204,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -3136,7 +3220,7 @@ Portfolio Wertentwicklung apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -3368,11 +3452,11 @@ Zurück apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -3384,31 +3468,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -3436,7 +3520,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -3444,7 +3528,7 @@ Zeitstrahl der Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3480,7 +3564,7 @@ Daten validieren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -3492,11 +3576,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -3576,7 +3660,7 @@ Dividenden importieren apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3648,7 +3732,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3656,7 +3740,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4076,7 +4160,7 @@ Möchtest du wirklich alle Aktivitäten löschen? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4090,6 +4174,10 @@ Delete all Activities Alle Aktivitäten löschen + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4258,6 +4346,14 @@ Import Activities Aktivitäten importieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4270,6 +4366,14 @@ Import Dividends Dividenden importieren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4300,7 +4404,7 @@ Aktueller Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4308,7 +4412,7 @@ Längster Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4504,7 +4608,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9676,7 +9780,7 @@ Biometrische Authentifizierung apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9760,7 +9864,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10160,11 +10264,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10420,11 +10524,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10708,11 +10812,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10740,11 +10844,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10812,7 +10916,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10848,11 +10952,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12864,7 +12968,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12944,7 +13048,7 @@ Finde Position... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13284,7 +13388,7 @@ Ups! Die historischen Daten konnten nicht geparsed werden. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13292,7 +13396,7 @@ Möchtest du diese Systemmeldung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13316,7 +13420,7 @@ Cash-Bestände apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14087,6 +14191,46 @@ 56 + + is an invalid currency! + ist eine ungültige Währung! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + Der aktuelle Marktpreis ist + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Zeitraum + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index f50cded65..12d39c082 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -53,6 +53,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -157,6 +161,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -225,6 +233,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -261,6 +277,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -297,6 +317,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -449,6 +473,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -475,7 +503,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -519,7 +547,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -599,7 +627,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -607,7 +635,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -615,7 +643,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -623,7 +651,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -755,7 +783,7 @@ Usuario apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -799,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -811,7 +839,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -831,7 +859,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -847,7 +875,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -863,7 +891,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -883,11 +911,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1091,7 +1119,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1099,7 +1127,7 @@ apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1107,7 +1135,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1115,7 +1143,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1131,7 +1159,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1147,7 +1175,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1175,7 +1203,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1187,7 +1215,7 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1283,7 +1311,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1502,7 +1530,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1514,7 +1542,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1622,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -1822,7 +1850,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -1832,6 +1860,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -1902,7 +1934,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -1910,7 +1942,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -1918,7 +1950,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -1930,7 +1962,7 @@ Accede con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -1938,7 +1970,7 @@ ID usuario apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2008,6 +2040,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -2016,6 +2052,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -2250,7 +2290,7 @@ Cronología de la inversión apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -2266,7 +2306,7 @@ Lo peor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2392,6 +2432,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -2408,6 +2452,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2424,6 +2472,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2434,7 +2486,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2458,7 +2510,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2486,7 +2538,7 @@ Importando datos... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2494,7 +2546,7 @@ La importación se ha completado apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2624,6 +2676,10 @@ Draft Borrador + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -2634,12 +2690,20 @@ Importar operaciones apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Exportar operaciones + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -2652,6 +2716,14 @@ Export Drafts as ICS Exportar borrador como ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -2664,6 +2736,10 @@ Clone Clonar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -2672,6 +2748,10 @@ Export Draft as ICS Exportar borrador como ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -2680,6 +2760,10 @@ Do you really want to delete this activity? ¿Estás seguro de eliminar esta operación? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -2738,7 +2822,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2758,7 +2842,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -2774,7 +2858,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -2810,7 +2894,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -3046,7 +3130,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -3086,7 +3170,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -3094,7 +3178,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -3102,7 +3186,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -3110,7 +3194,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -3118,7 +3202,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -3134,7 +3218,7 @@ Evolución cartera apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -3366,11 +3450,11 @@ Volver apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -3382,31 +3466,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -3434,7 +3518,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -3454,7 +3538,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3478,7 +3562,7 @@ Validating data... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -3490,11 +3574,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -3574,7 +3658,7 @@ Import Dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3646,7 +3730,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3654,7 +3738,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4074,7 +4158,7 @@ Do you really want to delete all your activities? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4088,6 +4172,10 @@ Delete all Activities Delete all Activities + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4256,6 +4344,14 @@ Import Activities Import Activities + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4268,6 +4364,14 @@ Import Dividends Import Dividends + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4298,7 +4402,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4306,7 +4410,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4502,7 +4606,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9674,7 +9778,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9758,7 +9862,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10158,11 +10262,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10418,11 +10522,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10706,11 +10810,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10738,11 +10842,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10810,7 +10914,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10846,11 +10950,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12862,7 +12966,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12942,7 +13046,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13282,7 +13386,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13290,7 +13394,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13314,7 +13418,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14085,6 +14189,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index c107d8b50..5b7244ac7 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -48,6 +48,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -168,6 +172,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -200,6 +208,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -208,6 +220,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -276,6 +292,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -312,6 +336,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -348,6 +376,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -500,6 +532,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -526,7 +562,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -570,7 +606,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -618,7 +654,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -642,7 +678,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -806,7 +842,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -814,7 +850,7 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -838,7 +874,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -846,7 +882,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -854,7 +890,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -862,7 +898,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -914,7 +950,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -998,7 +1034,7 @@ Utilisateur apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -1026,7 +1062,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -1110,7 +1146,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -1122,7 +1158,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -1134,7 +1170,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -1150,7 +1186,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -1170,11 +1206,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1378,7 +1414,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1386,7 +1422,7 @@ Moi apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1394,7 +1430,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1402,7 +1438,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1418,7 +1454,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1434,7 +1470,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1450,7 +1486,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1462,7 +1498,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -1470,7 +1506,7 @@ Se connecter apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1482,7 +1518,7 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1863,6 +1899,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -1873,7 +1913,7 @@ Signaler une Erreur de Données apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1937,7 +1977,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -1949,7 +1989,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -1961,7 +2001,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -2041,7 +2081,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -2081,7 +2121,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -2091,6 +2131,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -2173,31 +2217,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -2209,7 +2253,7 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -2217,7 +2261,7 @@ Format de date et d'heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -2225,7 +2269,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -2233,7 +2277,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -2241,7 +2285,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -2249,7 +2293,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -2257,7 +2301,7 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -2269,7 +2313,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -2277,7 +2321,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -2285,7 +2329,7 @@ ID d'utilisateur apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2631,6 +2675,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2647,6 +2695,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2657,7 +2709,7 @@ Import des données... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2665,7 +2717,7 @@ L'import est terminé apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2673,7 +2725,7 @@ Validation des données... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -2689,11 +2741,11 @@ Retour apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -2705,11 +2757,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -2929,7 +2981,7 @@ Bas apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2937,7 +2989,7 @@ Évolution du Portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -2945,7 +2997,7 @@ Historique des Investissements apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -2953,7 +3005,7 @@ Historique des Dividendes apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3175,6 +3227,10 @@ Draft Brouillon + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -3185,12 +3241,20 @@ Importer Activités apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Exporter Activités + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -3203,6 +3267,14 @@ Export Drafts as ICS Exporter Brouillons sous ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -3215,6 +3287,10 @@ Clone Dupliquer + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -3223,6 +3299,10 @@ Export Draft as ICS Exporter Brouillon sous ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -3231,6 +3311,10 @@ Do you really want to delete this activity? Voulez-vous vraiment supprimer cette activité ? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -3573,7 +3657,7 @@ Importer Dividendes apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3645,7 +3729,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3653,7 +3737,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4073,7 +4157,7 @@ Voulez-vous vraiment supprimer toutes vos activités ? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4087,6 +4171,10 @@ Delete all Activities Supprimer toutes les Activités + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4255,6 +4343,14 @@ Import Activities Importer les Activités + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4267,6 +4363,14 @@ Import Dividends Importer les Dividendes + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4297,7 +4401,7 @@ Série en cours apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4305,7 +4409,7 @@ Série la plus longue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4501,7 +4605,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9673,7 +9777,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9757,7 +9861,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10157,11 +10261,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10417,11 +10521,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10705,11 +10809,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10737,11 +10841,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10809,7 +10913,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10845,11 +10949,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12861,7 +12965,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12941,7 +13045,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13281,7 +13385,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13289,7 +13393,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13313,7 +13417,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14084,6 +14188,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index fa83ef57a..a72368a19 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -53,6 +53,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -157,6 +161,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -225,6 +233,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -261,6 +277,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -297,6 +317,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -449,6 +473,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -475,7 +503,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -519,7 +547,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -599,7 +627,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -607,7 +635,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -615,7 +643,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -623,7 +651,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -755,7 +783,7 @@ Utente apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -799,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -811,7 +839,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -831,7 +859,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -847,7 +875,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -863,7 +891,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -883,11 +911,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1091,7 +1119,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1099,7 +1127,7 @@ Io apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1107,7 +1135,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1115,7 +1143,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1131,7 +1159,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1147,7 +1175,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1175,7 +1203,7 @@ Accedi apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1187,7 +1215,7 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1283,7 +1311,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1502,7 +1530,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1514,7 +1542,7 @@ Segnala un'anomalia dei dati apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1622,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -1822,7 +1850,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -1832,6 +1860,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -1902,7 +1934,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -1910,7 +1942,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -1918,7 +1950,7 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -1930,7 +1962,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -1938,7 +1970,7 @@ ID utente apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2008,6 +2040,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -2016,6 +2052,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -2250,7 +2290,7 @@ Cronologia degli investimenti apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -2266,7 +2306,7 @@ In basso apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2392,6 +2432,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -2408,6 +2452,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2424,6 +2472,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2434,7 +2486,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2458,7 +2510,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2486,7 +2538,7 @@ Importazione dei dati... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2494,7 +2546,7 @@ L'importazione è stata completata apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2624,6 +2676,10 @@ Draft Bozza + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -2634,12 +2690,20 @@ Importa le attività apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Esporta le attività + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -2652,6 +2716,14 @@ Export Drafts as ICS Esporta le bozze come ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -2664,6 +2736,10 @@ Clone Clona + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -2672,6 +2748,10 @@ Export Draft as ICS Esporta la bozza come ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -2680,6 +2760,10 @@ Do you really want to delete this activity? Vuoi davvero eliminare questa attività? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -2738,7 +2822,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2758,7 +2842,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -2774,7 +2858,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -2810,7 +2894,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -3046,7 +3130,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -3086,7 +3170,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -3094,7 +3178,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -3102,7 +3186,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -3110,7 +3194,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -3118,7 +3202,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -3134,7 +3218,7 @@ Evoluzione del portafoglio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -3366,11 +3450,11 @@ Indietro apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -3382,31 +3466,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -3434,7 +3518,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -3454,7 +3538,7 @@ Cronologia dei dividendi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3478,7 +3562,7 @@ Convalida dei dati... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -3490,11 +3574,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -3574,7 +3658,7 @@ Importa i dividendi apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3646,7 +3730,7 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3654,7 +3738,7 @@ Un'anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4074,7 +4158,7 @@ Vuoi davvero eliminare tutte le tue attività? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4088,6 +4172,10 @@ Delete all Activities Elimina tutte le attività + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4256,6 +4344,14 @@ Import Activities Importa le attività + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4268,6 +4364,14 @@ Import Dividends Importa i dividendi + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4298,7 +4402,7 @@ Serie attuale apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4306,7 +4410,7 @@ Serie più lunga apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4502,7 +4606,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9674,7 +9778,7 @@ Autenticazione biometrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9758,7 +9862,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10158,11 +10262,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10418,11 +10522,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10706,11 +10810,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10738,11 +10842,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10810,7 +10914,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10846,11 +10950,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12862,7 +12966,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12942,7 +13046,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13282,7 +13386,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13290,7 +13394,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13314,7 +13418,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14085,6 +14189,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index b103891ca..0ed7e09e0 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -52,6 +52,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -156,6 +160,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -224,6 +232,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -260,6 +276,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -296,6 +316,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -448,6 +472,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -474,7 +502,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -518,7 +546,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -598,7 +626,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -606,7 +634,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -614,7 +642,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -622,7 +650,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -754,7 +782,7 @@ Gebruiker apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -798,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -810,7 +838,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -830,7 +858,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -846,7 +874,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -862,7 +890,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -882,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1090,7 +1118,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1098,7 +1126,7 @@ Ik apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1106,7 +1134,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1114,7 +1142,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1130,7 +1158,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1146,7 +1174,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1174,7 +1202,7 @@ Aanmelden apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1186,7 +1214,7 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1282,7 +1310,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1501,7 +1529,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1513,7 +1541,7 @@ Gegevensstoring melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1621,7 +1649,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -1821,7 +1849,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -1831,6 +1859,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -1901,7 +1933,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -1909,7 +1941,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -1917,7 +1949,7 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -1929,7 +1961,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -1937,7 +1969,7 @@ Gebruikers-ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2007,6 +2039,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -2015,6 +2051,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -2249,7 +2289,7 @@ Tijdlijn investeringen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -2265,7 +2305,7 @@ Verliezers apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2391,6 +2431,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -2407,6 +2451,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2423,6 +2471,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2433,7 +2485,7 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2457,7 +2509,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2485,7 +2537,7 @@ Gegevens importeren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2493,7 +2545,7 @@ Importeren is voltooid apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2623,6 +2675,10 @@ Draft Concept + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -2633,12 +2689,20 @@ Activiteiten importeren apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Activiteiten exporteren + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -2651,6 +2715,14 @@ Export Drafts as ICS Concept exporteren als ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -2663,6 +2735,10 @@ Clone Kloon + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -2671,6 +2747,10 @@ Export Draft as ICS Concept exporteren als ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -2679,6 +2759,10 @@ Do you really want to delete this activity? Wil je deze activiteit echt verwijderen? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -2737,7 +2821,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2757,7 +2841,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -2773,7 +2857,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -2809,7 +2893,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -3045,7 +3129,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -3085,7 +3169,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -3093,7 +3177,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -3101,7 +3185,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -3109,7 +3193,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -3117,7 +3201,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -3133,7 +3217,7 @@ Waardeontwikkeling van portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -3365,11 +3449,11 @@ Terug apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -3381,31 +3465,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -3433,7 +3517,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -3453,7 +3537,7 @@ Tijdlijn dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3477,7 +3561,7 @@ Gegevens valideren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -3489,11 +3573,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -3573,7 +3657,7 @@ Importeer dividenden apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3645,7 +3729,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3653,7 +3737,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4073,7 +4157,7 @@ Wil je echt al je activiteiten verwijderen? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4087,6 +4171,10 @@ Delete all Activities Alle activiteiten verwijderen + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4255,6 +4343,14 @@ Import Activities Importeer activiteiten + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4267,6 +4363,14 @@ Import Dividends Importeer dividenden + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4297,7 +4401,7 @@ Huidige reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4305,7 +4409,7 @@ Langste reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4501,7 +4605,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9673,7 +9777,7 @@ Biometrische authenticatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9757,7 +9861,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10157,11 +10261,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10417,11 +10521,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10705,11 +10809,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10737,11 +10841,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10809,7 +10913,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10845,11 +10949,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12861,7 +12965,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12941,7 +13045,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13281,7 +13385,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13289,7 +13393,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13313,7 +13417,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14084,6 +14188,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 3971bd557..d0fd17ce5 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -26,11 +26,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -298,11 +298,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -562,11 +562,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -594,11 +594,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -682,7 +682,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -718,11 +718,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -982,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1006,7 +1006,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -1026,7 +1026,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1138,7 +1138,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1178,11 +1178,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1394,31 +1394,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -1472,6 +1472,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -1628,6 +1632,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -1660,6 +1668,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -1668,6 +1680,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -1720,6 +1736,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1756,6 +1780,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -1792,6 +1820,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1944,6 +1976,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1970,7 +2006,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -2014,7 +2050,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -2094,7 +2130,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2118,7 +2154,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2218,7 +2254,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -2246,11 +2282,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -2314,7 +2350,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -2322,7 +2358,7 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -2330,7 +2366,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -2338,7 +2374,7 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2398,7 +2434,7 @@ Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -2406,7 +2442,7 @@ Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -2414,7 +2450,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -2422,7 +2458,7 @@ Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -2430,7 +2466,7 @@ Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -2582,7 +2618,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -2630,7 +2666,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2794,7 +2830,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -2806,7 +2842,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -2818,7 +2854,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -2826,7 +2862,7 @@ Me apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -2834,7 +2870,7 @@ User apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -2842,7 +2878,7 @@ My Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -2850,7 +2886,7 @@ About Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2862,7 +2898,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2874,7 +2910,7 @@ Get started apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2882,7 +2918,7 @@ Sign in apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -2894,7 +2930,7 @@ Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -3414,6 +3450,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -3424,7 +3464,7 @@ Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -3712,7 +3752,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -3720,7 +3760,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -3768,7 +3808,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -3776,7 +3816,7 @@ Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -3784,7 +3824,7 @@ Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -3792,7 +3832,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -3800,7 +3840,7 @@ Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -3808,7 +3848,7 @@ Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -3816,7 +3856,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -3828,7 +3868,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3836,7 +3876,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -3844,7 +3884,7 @@ Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -3852,7 +3892,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -3860,7 +3900,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -3868,7 +3908,7 @@ User ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -3876,7 +3916,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -3900,7 +3940,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -3912,7 +3952,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -3924,7 +3964,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -4832,7 +4872,7 @@ Do you really want to delete all your activities? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4902,6 +4942,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -4926,6 +4970,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -4950,6 +4998,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -4968,7 +5020,7 @@ Import Activities apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 @@ -4976,7 +5028,7 @@ Import Dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -4984,7 +5036,7 @@ Importing data... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -4992,7 +5044,7 @@ Import has been completed apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -5000,7 +5052,7 @@ Validating data... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -5072,11 +5124,11 @@ Back apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -5340,7 +5392,7 @@ Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -5348,7 +5400,7 @@ Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -5356,7 +5408,7 @@ Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -5364,7 +5416,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -5372,7 +5424,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -5380,7 +5432,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -12626,6 +12678,14 @@ Import Activities Import Activities + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -12638,6 +12698,14 @@ Import Dividends Import Dividends + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -12650,6 +12718,14 @@ Export Activities Export Activities + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -12662,6 +12738,14 @@ Export Drafts as ICS Export Drafts as ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -12674,6 +12758,10 @@ Delete all Activities Delete all Activities + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -12682,6 +12770,10 @@ Draft Draft + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -12690,6 +12782,10 @@ Clone Clone + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -12698,6 +12794,10 @@ Export Draft as ICS Export Draft as ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -12706,6 +12806,10 @@ Do you really want to delete this activity? Do you really want to delete this activity? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -12724,7 +12828,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13316,7 +13420,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14087,6 +14191,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 2c358c8cd..7aa2906d0 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -48,6 +48,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -168,6 +172,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -200,6 +208,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -208,6 +220,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -276,6 +292,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -312,6 +336,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -348,6 +376,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -500,6 +532,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -526,7 +562,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -570,7 +606,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -618,7 +654,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -642,7 +678,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -750,7 +786,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -758,7 +794,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -766,7 +802,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -774,7 +810,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -878,7 +914,7 @@ Utilizador apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -906,7 +942,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -990,7 +1026,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -1002,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -1014,7 +1050,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -1030,7 +1066,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -1050,11 +1086,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1258,7 +1294,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1266,7 +1302,7 @@ Eu apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -1274,7 +1310,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -1282,7 +1318,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1298,7 +1334,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1314,7 +1350,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -1330,7 +1366,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1342,7 +1378,7 @@ Começar apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -1350,7 +1386,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1362,7 +1398,7 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -1759,6 +1795,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -1829,7 +1869,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1841,7 +1881,7 @@ Dados do Relatório com Problema apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -1921,7 +1961,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -1933,7 +1973,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -1945,7 +1985,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -2025,7 +2065,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -2065,7 +2105,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -2075,6 +2115,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -2165,7 +2209,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -2173,7 +2217,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -2181,7 +2225,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -2193,7 +2237,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -2201,7 +2245,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -2209,7 +2253,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -2217,7 +2261,7 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -2225,7 +2269,7 @@ Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -2233,7 +2277,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -2241,7 +2285,7 @@ ID do Utilizador apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -2547,6 +2591,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -2563,6 +2611,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -2573,7 +2625,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2589,7 +2641,7 @@ A importar dados... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -2597,7 +2649,7 @@ A importação foi concluída apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -2613,11 +2665,11 @@ Anterior apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -2809,7 +2861,7 @@ Fundo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -2817,7 +2869,7 @@ Evolução do Portefólio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -2825,7 +2877,7 @@ Cronograma de Investimento apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -3051,6 +3103,10 @@ Draft Rascunho + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -3061,12 +3117,20 @@ Importar Atividades apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Export Activities Exportar Atividades + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -3079,6 +3143,14 @@ Export Drafts as ICS Exportar Rascunhos como ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -3091,6 +3163,10 @@ Clone Clonar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -3099,6 +3175,10 @@ Export Draft as ICS Exportar Rascunho como ICS + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -3107,6 +3187,10 @@ Do you really want to delete this activity? Deseja realmente eliminar esta atividade? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -3417,7 +3501,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -3437,31 +3521,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -3497,7 +3581,7 @@ A validar dados... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -3509,11 +3593,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -3533,7 +3617,7 @@ Cronograma de Dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -3573,7 +3657,7 @@ Importar Dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -3645,7 +3729,7 @@ Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -3653,7 +3737,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -4073,7 +4157,7 @@ Deseja mesmo eliminar todas as suas atividades? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4087,6 +4171,10 @@ Delete all Activities Apagar todas as Atividades + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -4255,6 +4343,14 @@ Import Activities Importar Atividades + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -4267,6 +4363,14 @@ Import Dividends Importar Dividendos + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -4297,7 +4401,7 @@ Série Atual apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4305,7 +4409,7 @@ Série mais Longa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4501,7 +4605,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -9673,7 +9777,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -9757,7 +9861,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -10157,11 +10261,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -10417,11 +10521,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -10705,11 +10809,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -10737,11 +10841,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -10809,7 +10913,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -10845,11 +10949,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -12861,7 +12965,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12941,7 +13045,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13281,7 +13385,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13289,7 +13393,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13313,7 +13417,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14084,6 +14188,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 33f91edd1..d189d49a2 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -26,11 +26,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -298,11 +298,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -562,11 +562,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -594,11 +594,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -682,7 +682,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -718,11 +718,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -958,7 +958,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -982,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -1002,7 +1002,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1114,7 +1114,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1154,11 +1154,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1370,31 +1370,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -1448,6 +1448,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -1592,6 +1596,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -1624,6 +1632,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -1632,6 +1644,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -1684,6 +1700,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1720,6 +1744,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -1756,6 +1784,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1908,6 +1940,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1934,7 +1970,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1978,7 +2014,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -2050,7 +2086,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2074,7 +2110,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2246,7 +2282,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 @@ -2254,7 +2290,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 @@ -2262,7 +2298,7 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2306,7 +2342,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 @@ -2314,7 +2350,7 @@ Bu para birimini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 @@ -2322,7 +2358,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 @@ -2330,7 +2366,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 @@ -2382,7 +2418,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 + 289 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2490,7 +2526,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -2542,7 +2578,7 @@ Kullanıcı apps/client/src/app/components/header/header.component.html - 192 + 198 @@ -2654,7 +2690,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -2666,7 +2702,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -2678,7 +2714,7 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 @@ -2686,7 +2722,7 @@ Ben apps/client/src/app/components/header/header.component.html - 173 + 179 @@ -2694,7 +2730,7 @@ Ghostfolio'm apps/client/src/app/components/header/header.component.html - 231 + 237 @@ -2702,7 +2738,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2714,7 +2750,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2726,7 +2762,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 373 + 379 @@ -2734,7 +2770,7 @@ Giriş apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -2746,7 +2782,7 @@ Hay Allah! Güvenlik anahtarı yanlış. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -3239,6 +3275,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 153 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 + libs/ui/src/lib/activities-table/activities-table.component.html 230 @@ -3257,22 +3297,6 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 - - - - First Buy Date - İlk Alım Tarihi - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - İşlemler - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html 150 @@ -3281,7 +3305,7 @@ Rapor Veri Sorunu apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -3294,7 +3318,7 @@ Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Bugün Ghostfolio Premium'a yükseltin ve yatırım deneyiminizi geliştirmek için ayrıcalıklı özelliklere erişim kazanın: + Bugün Ghostfolio Premium'a yükseltin ve yatırım deneyiminizi geliştirmek için ayrıcalıklı özelliklere erişim kazanın: apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 18 @@ -3414,7 +3438,7 @@ Upgrade Plan - <Üyeliğinizi Yükseltin> + Üyeliğinizi Yükseltin apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 62 @@ -3485,7 +3509,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + 137 @@ -3497,7 +3521,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + 135 @@ -3509,7 +3533,7 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 132 + 138 @@ -3754,7 +3778,7 @@ Check out the numerous features of Ghostfolio to manage your wealth - Varlığınızı yönetmek için Ghostfolio'nun pek çok özelliğini keşfedin + Varlığınızı yönetmek için Ghostfolio'nun pek çok özelliğini keşfedin apps/client/src/app/pages/features/features-page.html 6 @@ -3770,7 +3794,7 @@ ETFs - ETF'ler + ETF'ler apps/client/src/app/pages/features/features-page.html 25 @@ -3837,7 +3861,7 @@ Zen Modu apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + 153 apps/client/src/app/pages/features/features-page.html @@ -3998,7 +4022,7 @@ Stars on GitHub - GitHub'daki Beğeniler + GitHub'daki Beğeniler apps/client/src/app/pages/landing/landing-page.html 93 @@ -4010,7 +4034,7 @@ Pulls on Docker Hub - Docker Hub'ta Çekmeler + Docker Hub'ta Çekmeler apps/client/src/app/pages/landing/landing-page.html 111 @@ -4038,7 +4062,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio, takip edilmeden hisse senetleri, ETF'ler veya kripto paraları izlemek isteyen yoğun insanlara güç verir. + Ghostfolio, takip edilmeden hisse senetleri, ETF'ler veya kripto paraları izlemek isteyen yoğun insanlara güç verir. apps/client/src/app/pages/landing/landing-page.html 225 @@ -4070,7 +4094,7 @@ Use Ghostfolio anonymously and own your financial data. - Ghostfolio'yu anonim olarak kullanın ve finansal verilerinize sahip çıkın. + Ghostfolio'yu anonim olarak kullanın ve finansal verilerinize sahip çıkın. apps/client/src/app/pages/landing/landing-page.html 249 @@ -4270,7 +4294,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Ghostfolio'da şeffaflık, değerlerimizin temelinde yer alır. Kaynak kodunu açık kaynak yazılım (OSS) olarak AGPL-3.0 lisansı altında yayınlıyoruz ve platformun işletme durumunun toplu anahtar metriklerini açıkça paylaşıyoruz. + Ghostfolio'da şeffaflık, değerlerimizin temelinde yer alır. Kaynak kodunu açık kaynak yazılım (OSS) olarak AGPL-3.0 lisansı altında yayınlıyoruz ve platformun işletme durumunun toplu anahtar metriklerini açıkça paylaşıyoruz. apps/client/src/app/pages/open/open-page.html 6 @@ -4306,7 +4330,7 @@ Contributors on GitHub - GitHub'da Katkıda Bulunanlar + GitHub'da Katkıda Bulunanlar apps/client/src/app/pages/open/open-page.html 89 @@ -4337,7 +4361,7 @@ Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4350,7 +4374,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Hisse senetleri, ETF'ler, tahviller, kripto paralar, emtialar + Hisse senetleri, ETF'ler, tahviller, kripto paralar, emtialar apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 21 @@ -4383,6 +4407,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -4407,6 +4435,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 @@ -4431,6 +4463,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 @@ -4441,7 +4477,7 @@ İşlemleri İçe Aktar apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 @@ -4449,7 +4485,7 @@ Temettüleri İçe Aktar apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 @@ -4457,7 +4493,7 @@ Veri içe aktarılıyor... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 @@ -4465,7 +4501,7 @@ İçe aktarma tamamlandı apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 @@ -4473,7 +4509,7 @@ Veri doğrulanıyor... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -4537,11 +4573,11 @@ Geri apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + 199 @@ -4553,11 +4589,11 @@ apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 171 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 207 @@ -4821,7 +4857,7 @@ Alt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 @@ -4829,7 +4865,7 @@ Portföyün Gelişimi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 @@ -4837,7 +4873,7 @@ Yatırım Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 @@ -4845,7 +4881,7 @@ Güncel Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 @@ -4853,7 +4889,7 @@ En Uzun Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 @@ -4861,7 +4897,7 @@ Temettü Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -4938,7 +4974,7 @@ Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Resmi Ghostfolio Premium bulut teklifimiz bir başlangıç yapmanın en kolay yoludur. Zaman tasarrufu sağladığı için çoğu insan için en iyi seçenek olacaktır. Gelir, barındırma altyapısının maliyetlerini karşılamak ve süregiden geliştirme işlerini finanse etmek için kullanılmaktadır. + Resmi Ghostfolio Premium bulut teklifimiz bir başlangıç yapmanın en kolay yoludur. Zaman tasarrufu sağladığı için çoğu insan için en iyi seçenek olacaktır. Gelir, barındırma altyapısının maliyetlerini karşılamak ve süregiden geliştirme işlerini finanse etmek için kullanılmaktadır. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -4946,7 +4982,7 @@ If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Ghostfolio'yu kendi altyapınızda çalıştırmayı tercih ederseniz, lütfen kaynak kodunu ve daha fazla talimatı GitHub adresinde bulun. + Ghostfolio'yu kendi altyapınızda çalıştırmayı tercih ederseniz, lütfen kaynak kodunu ve daha fazla talimatı GitHub adresinde bulun. apps/client/src/app/pages/pricing/pricing-page.html 24 @@ -4954,7 +4990,7 @@ For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - Kendi altyapılarında Ghostfolio'yu çalıştırmayı tercih eden teknolojiye hakim yatırımcılar için. + Kendi altyapılarında Ghostfolio'yu çalıştırmayı tercih eden teknolojiye hakim yatırımcılar için. apps/client/src/app/pages/pricing/pricing-page.html 36 @@ -5034,7 +5070,7 @@ Self-hosted, update manually. - Tarafınızca barındırılıyor, elle güncelleyiniz. + Tarafınızca barındırılıyor, elle güncelleyiniz. apps/client/src/app/pages/pricing/pricing-page.html 122 @@ -11818,7 +11854,7 @@ My Ghostfolio - Benim Ghostfolio'm + Benim Ghostfolio'm apps/client/src/app/pages/user-account/user-account-page-routing.module.ts 32 @@ -11829,7 +11865,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + 32 @@ -11869,7 +11905,7 @@ Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + 187 @@ -11918,7 +11954,7 @@ Try Premium - Premium'u Deneyin + Premium'u Deneyin apps/client/src/app/components/user-account-membership/user-account-membership.html 42 @@ -11969,7 +12005,7 @@ Yerel Ayarlar apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + 107 @@ -11977,7 +12013,7 @@ Tarih ve Sayı Formatları apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + 109 @@ -11985,7 +12021,7 @@ Görünüm apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + 130 @@ -11993,7 +12029,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + 142 @@ -12001,7 +12037,7 @@ Açık apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 143 @@ -12009,7 +12045,7 @@ Koyu apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + 144 @@ -12017,7 +12053,7 @@ Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + 154 @@ -12025,7 +12061,7 @@ Biyometrik Kimlik Doğrulama apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + 170 @@ -12033,7 +12069,7 @@ Parmak iziyle oturum aç apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + 171 @@ -12041,7 +12077,7 @@ Deneysel Özellikler apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + 188 @@ -12049,7 +12085,7 @@ Gelecek özelliklere göz atın apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + 189 @@ -12057,7 +12093,7 @@ Kullanıcı Kimliği apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + 204 @@ -12065,7 +12101,7 @@ Verileri Dışa Aktar apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + 211 @@ -12103,6 +12139,14 @@ Import Activities İşlemleri İçe Aktar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 + libs/ui/src/lib/activities-table/activities-table.component.html 16 @@ -12115,6 +12159,14 @@ Import Dividends Temettüleri İçe Aktar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 + libs/ui/src/lib/activities-table/activities-table.component.html 35 @@ -12127,6 +12179,14 @@ Export Activities İşlemleri Dışa Aktar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 + libs/ui/src/lib/activities-table/activities-table.component.html 47 @@ -12139,6 +12199,14 @@ Export Drafts as ICS Taslakları ICS Olarak Dışa Aktar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 + libs/ui/src/lib/activities-table/activities-table.component.html 59 @@ -12151,6 +12219,10 @@ Delete all Activities Tüm İşlemleri sil + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 + libs/ui/src/lib/activities-table/activities-table.component.html 69 @@ -12159,6 +12231,10 @@ Draft Taslak + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 + libs/ui/src/lib/activities-table/activities-table.component.html 189 @@ -12167,6 +12243,10 @@ Clone Klonla + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 + libs/ui/src/lib/activities-table/activities-table.component.html 513 @@ -12175,6 +12255,10 @@ Export Draft as ICS Taslakları ICS Olarak Dışa Aktar + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 + libs/ui/src/lib/activities-table/activities-table.component.html 523 @@ -12183,6 +12267,10 @@ Do you really want to delete this activity? TBu işlemi silmeyi gerçekten istiyor musunuz? + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 + libs/ui/src/lib/activities-table/activities-table.component.ts 227 @@ -12877,7 +12965,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + 228 @@ -12957,7 +13045,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 89 + 95 @@ -13297,7 +13385,7 @@ Oops! Could not parse historical data. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + 215 @@ -13305,7 +13393,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + 163 @@ -13329,7 +13417,7 @@ Cash Balances apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 + 106 @@ -14100,6 +14188,46 @@ 56 + + is an invalid currency! + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + + The current market price is + The current market price is + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + + Test + Test + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 96 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 2c04c01a4..f90f577e0 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -26,11 +26,11 @@ apps/client/src/app/components/header/header.component.ts - 71 + 73 apps/client/src/app/components/header/header.component.ts - 76 + 78 apps/client/src/app/pages/about/about-page.component.ts @@ -296,11 +296,11 @@ apps/client/src/app/components/header/header.component.ts - 72 + 74 apps/client/src/app/components/header/header.component.ts - 77 + 79 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -558,11 +558,11 @@ apps/client/src/app/components/header/header.component.ts - 73 + 75 apps/client/src/app/components/header/header.component.ts - 78 + 80 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -589,11 +589,11 @@ apps/client/src/app/components/header/header.component.ts - 74 + 76 apps/client/src/app/components/header/header.component.ts - 79 + 81 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -675,7 +675,7 @@ apps/client/src/app/components/header/header.component.ts - 80 + 82 apps/client/src/app/core/auth.guard.ts @@ -710,11 +710,11 @@ apps/client/src/app/components/header/header.component.ts - 75 + 77 apps/client/src/app/components/header/header.component.ts - 81 + 83 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -933,6 +933,28 @@ 17 + + You are using the Live Demo. + + apps/client/src/app/app.component.html + 17 + + + + Create Account + + apps/client/src/app/app.component.html + 18 + + + apps/client/src/app/pages/register/register-page.html + 26 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + Personal Finance @@ -948,7 +970,7 @@ apps/client/src/app/components/header/header.component.html - 348 + 354 apps/client/src/app/components/home-market/home-market.html @@ -971,7 +993,7 @@ apps/client/src/app/components/header/header.component.html - 251 + 257 apps/client/src/app/pages/resources/resources-page.html @@ -990,7 +1012,7 @@ apps/client/src/app/components/header/header.component.html - 319 + 325 @@ -1099,7 +1121,7 @@ apps/client/src/app/components/header/header.component.html - 306 + 312 apps/client/src/app/pages/features/features-page.html @@ -1136,11 +1158,11 @@ apps/client/src/app/components/header/header.component.html - 263 + 269 apps/client/src/app/components/header/header.component.html - 332 + 338 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1350,31 +1372,31 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 62 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 66 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 70 + 82 apps/client/src/app/components/user-account-settings/user-account-settings.html - 74 + 86 apps/client/src/app/components/user-account-settings/user-account-settings.html - 78 + 90 apps/client/src/app/components/user-account-settings/user-account-settings.html - 82 + 94 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 98 apps/client/src/app/pages/features/features-page.html @@ -1424,6 +1446,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 12 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 154 + libs/ui/src/lib/activities-table/activities-table.component.html 164 @@ -1472,21 +1498,6 @@ 54 - - Platform - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 77 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 45 - - Activities @@ -1522,6 +1533,39 @@ 4 + + Platform + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 77 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 45 + + + + Cash Balances + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 106 + + + + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + Name @@ -1560,6 +1604,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 114 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 130 + libs/ui/src/lib/activities-table/activities-table.component.html 179 @@ -1590,6 +1638,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 91 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 22 @@ -1598,6 +1650,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 120 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 269 + libs/ui/src/lib/activities-table/activities-table.component.html 209 @@ -1649,6 +1705,14 @@ libs/ui/src/lib/account-balances/account-balances.component.html 20 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 250 + + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 286 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1684,6 +1748,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 71 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 415 + libs/ui/src/lib/activities-table/activities-table.component.html 507 @@ -1719,6 +1787,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 50 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 437 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1731,6 +1803,20 @@ 83 + + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Historical Market Data + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + Symbol @@ -1800,20 +1886,6 @@ 135 - - Asset Profiles - - libs/ui/src/lib/assistant/assistant.html - 67 - - - - Historical Market Data - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 - - View Data @@ -1856,6 +1928,10 @@ libs/ui/src/lib/account-balances/account-balances.component.html 11 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 163 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1880,7 +1956,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 260 + 281 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1923,7 +1999,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + 288 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1971,6 +2047,13 @@ 76 + + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + Filter by... @@ -1990,7 +2073,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 188 + 197 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2013,7 +2096,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 210 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2100,6 +2183,13 @@ 38 + + Oops! Could not parse historical data. + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 215 + + Refresh @@ -2114,6 +2204,21 @@ 30 + + Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 79 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 171 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 207 + + Sector @@ -2166,25 +2271,32 @@ 228 + + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 + + Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 234 Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 236 + 245 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 247 + 268 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2202,6 +2314,20 @@ 7 + + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + Name, symbol or ISIN @@ -2220,32 +2346,53 @@ 119 + + is an invalid currency! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 133 + 137 Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 146 + 150 + + + + Do you really want to delete this system message? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 163 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 173 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 200 + 204 + + + + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 @@ -2283,21 +2430,6 @@ 113 - - Tags - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 10 - - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 270 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 320 - - User Signup @@ -2388,7 +2520,7 @@ apps/client/src/app/components/header/header.component.html - 224 + 230 apps/client/src/app/pages/accounts/accounts-page.html @@ -2423,6 +2555,49 @@ 4 + + Tags + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 + + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 289 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 320 + + + + Add Tag + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + + Do you really want to delete this tag? + + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + + Update tag + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + + Add tag + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + Do you really want to delete this user? @@ -2430,11 +2605,11 @@ 112 - - User + + User - apps/client/src/app/components/header/header.component.html - 192 + apps/client/src/app/components/admin-users/admin-users.html + 29 @@ -2534,7 +2709,7 @@ apps/client/src/app/components/header/header.component.html - 206 + 212 @@ -2545,7 +2720,7 @@ apps/client/src/app/components/header/header.component.html - 216 + 222 @@ -2556,28 +2731,35 @@ apps/client/src/app/components/header/header.component.html - 240 + 246 Me apps/client/src/app/components/header/header.component.html - 173 + 179 + + + + User + + apps/client/src/app/components/header/header.component.html + 198 My Ghostfolio apps/client/src/app/components/header/header.component.html - 231 + 237 About Ghostfolio apps/client/src/app/components/header/header.component.html - 271 + 277 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2588,7 +2770,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 361 + 367 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2599,14 +2781,14 @@ Get started apps/client/src/app/components/header/header.component.html - 373 + 379 Sign in apps/client/src/app/components/header/header.component.ts - 169 + 186 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -2617,7 +2799,7 @@ Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 183 + 200 @@ -2839,6 +3021,23 @@ 3 + + + + + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 12 + + + + {VAR_PLURAL, plural, =1 {transaction} other {transactions}} + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 13 + + Buy @@ -2878,21 +3077,19 @@ 72 - - - - - + + Fees apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 12 + 87 - - - {VAR_PLURAL, plural, =1 {transaction} other {transactions}} - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 13 + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 148 + + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 150 @@ -2991,6 +3188,13 @@ 262 + + Interest + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + Dividend @@ -3060,30 +3264,19 @@ 153 - libs/ui/src/lib/activities-table/activities-table.component.html - 230 - - - - Fees - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 87 - - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 148 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 179 - apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + libs/ui/src/lib/activities-table/activities-table.component.html + 230 Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 287 + 306 @@ -3250,734 +3443,1011 @@ 25 - - This feature is currently unavailable. + + Grant access - apps/client/src/app/core/http-response.interceptor.ts - 59 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Please try again later. - - apps/client/src/app/core/http-response.interceptor.ts - 61 - - - apps/client/src/app/core/http-response.interceptor.ts - 88 - + + Public - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 131 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Oops! Something went wrong. + + Granted Access - apps/client/src/app/core/http-response.interceptor.ts - 86 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + Please enter your coupon code: - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 129 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 - - Okay + + Could not redeem coupon code - apps/client/src/app/core/http-response.interceptor.ts - 89 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 + + + Coupon code has been redeemed - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 132 - - About + + Reload - apps/client/src/app/pages/about/about-page-routing.module.ts - 52 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 + + + Upgrade - apps/client/src/app/pages/about/about-page.component.ts - 43 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 + + + Renew - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 - - Changelog + + per year - apps/client/src/app/pages/about/about-page.component.ts - 48 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 12 + apps/client/src/app/pages/pricing/pricing-page.html + 332 - - License + + Try Premium - apps/client/src/app/pages/about/about-page.component.ts - 53 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 42 + + + Redeem Coupon - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 55 - - Privacy Policy + + Auto - apps/client/src/app/pages/about/about-page.component.ts - 61 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 32 - - Our + + Do you really want to remove this sign in method? - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 187 - - Discover other exciting Open Source Software projects + + Settings - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - Visit + + Presenter View - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 - - Accounts + + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 - - Update account + + Base Currency - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 - - Add account + + Language - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 - - Account ID + + Locale - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 90 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 107 - - Admin Control + + Date and number format - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 19 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 109 - - Jobs + + Appearance - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 130 + + + Auto - apps/client/src/app/pages/admin/admin-page.component.ts - 41 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 142 - - Market Data + + Light - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 143 + + + Dark - apps/client/src/app/pages/admin/admin-page.component.ts - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 144 - - Settings + + Zen Mode - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 - apps/client/src/app/pages/admin/admin-page.component.ts - 31 + apps/client/src/app/pages/features/features-page.html + 192 + + + Distraction-free experience for turbulent times - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 154 + + + Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.component.ts - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170 - - Users + + Sign in with fingerprint - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 171 + + + Experimental Features - apps/client/src/app/pages/admin/admin-page.component.ts - 46 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 188 - - Overview + + Sneak peek at upcoming functionality - apps/client/src/app/pages/admin/admin-page.component.ts - 26 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 189 + + + User ID - apps/client/src/app/pages/home/home-page.component.ts - 33 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 204 + + + Export Data - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 18 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 211 + + + This feature is currently unavailable. - apps/client/src/app/pages/zen/zen-page.component.ts - 33 + apps/client/src/app/core/http-response.interceptor.ts + 59 - - Blog + + Please try again later. - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 12 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - - Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/pages/blog/blog-page.html - 7 + apps/client/src/app/core/http-response.interceptor.ts + 88 - - - As you are already logged in, you cannot access the demo account. - apps/client/src/app/pages/demo/demo-page.component.ts - 31 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 137 - - Frequently Asked Questions (FAQ) + + Oops! Something went wrong. - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 12 + apps/client/src/app/core/http-response.interceptor.ts + 86 - - - Frequently Asked Questions (FAQ) - apps/client/src/app/pages/faq/faq-page.html - 4 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 135 - - Features + + Okay - apps/client/src/app/pages/features/features-page-routing.module.ts - 12 + apps/client/src/app/core/http-response.interceptor.ts + 89 - - - Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/pages/features/features-page.html - 6 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 - - Stocks + + About - apps/client/src/app/pages/features/features-page.html - 15 + apps/client/src/app/pages/about/about-page-routing.module.ts + 52 - - - ETFs - apps/client/src/app/pages/features/features-page.html - 25 + apps/client/src/app/pages/about/about-page.component.ts + 43 - - - Bonds - apps/client/src/app/pages/features/features-page.html - 38 + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 12 - - Cryptocurrencies + + Changelog - apps/client/src/app/pages/features/features-page.html - 51 + apps/client/src/app/pages/about/about-page.component.ts + 48 - - - Wealth Items - apps/client/src/app/pages/features/features-page.html - 76 + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 12 - - Import and Export + + License - apps/client/src/app/pages/features/features-page.html - 115 + apps/client/src/app/pages/about/about-page.component.ts + 53 - - - Multi-Accounts - apps/client/src/app/pages/features/features-page.html - 127 + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 12 - - Portfolio Calculations + + Privacy Policy - apps/client/src/app/pages/features/features-page.html - 141 + apps/client/src/app/pages/about/about-page.component.ts + 61 + + + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 12 - - Dark Mode + + Our - apps/client/src/app/pages/features/features-page.html - 179 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - Zen Mode + + Discover other exciting Open Source Software projects - apps/client/src/app/components/user-account-settings/user-account-settings.html - 141 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Visit - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - Market Mood + + Accounts - apps/client/src/app/pages/features/features-page.html - 209 + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 12 - - Static Analysis + + Oops, cash balance transfer has failed. - apps/client/src/app/pages/features/features-page.html - 227 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 - - Multi-Language + + Update account - apps/client/src/app/pages/features/features-page.html - 245 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 7 - - Open Source Software + + Add account - apps/client/src/app/pages/features/features-page.html - 279 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 - - Get Started + + Account ID - apps/client/src/app/pages/features/features-page.html - 299 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 90 + + + From - apps/client/src/app/pages/public/public-page.html - 152 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Holdings + + To - apps/client/src/app/pages/home/home-page-routing.module.ts - 22 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + Transfer - apps/client/src/app/pages/home/home-page.component.ts - 38 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + Admin Control - apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts - 12 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 19 + + + Jobs - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 38 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 21 - apps/client/src/app/pages/zen/zen-page.component.ts - 38 + apps/client/src/app/pages/admin/admin-page.component.ts + 41 - - Summary + + Market Data - apps/client/src/app/pages/home/home-page-routing.module.ts - 27 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/home/home-page.component.ts - 43 + apps/client/src/app/pages/admin/admin-page.component.ts + 36 - - Markets + + Settings - apps/client/src/app/pages/home/home-page-routing.module.ts - 32 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 48 + apps/client/src/app/pages/admin/admin-page.component.ts + 31 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 12 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 - - - New - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 - - Manage your wealth like a boss + + Users - apps/client/src/app/pages/landing/landing-page.html - 11 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/landing/landing-page.html - 15 + apps/client/src/app/pages/admin/admin-page.component.ts + 46 - - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 47 - + + Overview - apps/client/src/app/pages/landing/landing-page.html - 431 + apps/client/src/app/pages/admin/admin-page.component.ts + 26 - - - or - apps/client/src/app/pages/landing/landing-page.html - 52 + apps/client/src/app/pages/home/home-page.component.ts + 33 - - - Live Demo - apps/client/src/app/pages/landing/landing-page.html - 55 + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 18 - apps/client/src/app/pages/landing/landing-page.html - 436 + apps/client/src/app/pages/zen/zen-page.component.ts + 33 - - Monthly Active Users + + Blog - apps/client/src/app/pages/landing/landing-page.html - 75 + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 12 - - Stars on GitHub + + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/pages/landing/landing-page.html - 93 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + As you are already logged in, you cannot access the demo account. - apps/client/src/app/pages/open/open-page.html - 103 + apps/client/src/app/pages/demo/demo-page.component.ts + 31 - - Pulls on Docker Hub + + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/landing/landing-page.html - 111 + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 12 + + + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/open/open-page.html - 117 + apps/client/src/app/pages/faq/faq-page.html + 4 - - As seen in + + Features - apps/client/src/app/pages/landing/landing-page.html - 119 + apps/client/src/app/pages/features/features-page-routing.module.ts + 12 - - Protect your assets. Refine your personal investment strategy. + + Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/pages/landing/landing-page.html - 221 + apps/client/src/app/pages/features/features-page.html + 6 - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + + Stocks - apps/client/src/app/pages/landing/landing-page.html - 225 + apps/client/src/app/pages/features/features-page.html + 15 - - 360° View + + ETFs - apps/client/src/app/pages/landing/landing-page.html - 236 + apps/client/src/app/pages/features/features-page.html + 25 - - Get the full picture of your personal finances across multiple platforms. + + Bonds - apps/client/src/app/pages/landing/landing-page.html - 238 + apps/client/src/app/pages/features/features-page.html + 38 - - Web3 Ready + + Cryptocurrencies - apps/client/src/app/pages/landing/landing-page.html - 247 + apps/client/src/app/pages/features/features-page.html + 51 - - Use Ghostfolio anonymously and own your financial data. + + Wealth Items - apps/client/src/app/pages/landing/landing-page.html - 249 + apps/client/src/app/pages/features/features-page.html + 76 - - Open Source + + Import and Export - apps/client/src/app/pages/landing/landing-page.html - 257 + apps/client/src/app/pages/features/features-page.html + 115 - - Benefit from continuous improvements through a strong community. + + Multi-Accounts - apps/client/src/app/pages/landing/landing-page.html - 259 + apps/client/src/app/pages/features/features-page.html + 127 - - Why Ghostfolio? + + Portfolio Calculations - apps/client/src/app/pages/landing/landing-page.html - 268 + apps/client/src/app/pages/features/features-page.html + 141 - - Ghostfolio is for you if you are... + + Dark Mode - apps/client/src/app/pages/landing/landing-page.html - 269 + apps/client/src/app/pages/features/features-page.html + 179 - - trading stocks, ETFs or cryptocurrencies on multiple platforms + + Market Mood - apps/client/src/app/pages/landing/landing-page.html - 276 + apps/client/src/app/pages/features/features-page.html + 209 - - pursuing a buy & hold strategy + + Static Analysis - apps/client/src/app/pages/landing/landing-page.html - 282 + apps/client/src/app/pages/features/features-page.html + 227 - - interested in getting insights of your portfolio composition + + Multi-Language - apps/client/src/app/pages/landing/landing-page.html - 287 + apps/client/src/app/pages/features/features-page.html + 245 - - valuing privacy and data ownership + + Open Source Software - apps/client/src/app/pages/landing/landing-page.html - 292 + apps/client/src/app/pages/features/features-page.html + 279 - - into minimalism + + Get Started - apps/client/src/app/pages/landing/landing-page.html - 295 + apps/client/src/app/pages/features/features-page.html + 299 + + + apps/client/src/app/pages/public/public-page.html + 152 - - caring about diversifying your financial resources + + Holdings - apps/client/src/app/pages/landing/landing-page.html - 299 + apps/client/src/app/pages/home/home-page-routing.module.ts + 22 + + + apps/client/src/app/pages/home/home-page.component.ts + 38 + + + apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts + 12 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 38 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 38 - - interested in financial independence + + Summary - apps/client/src/app/pages/landing/landing-page.html - 303 + apps/client/src/app/pages/home/home-page-routing.module.ts + 27 + + + apps/client/src/app/pages/home/home-page.component.ts + 43 - - saying no to spreadsheets in + + Markets - apps/client/src/app/pages/landing/landing-page.html - 307 + apps/client/src/app/pages/home/home-page-routing.module.ts + 32 + + + apps/client/src/app/pages/home/home-page.component.ts + 48 + + + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 12 - - still reading this list + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - apps/client/src/app/pages/landing/landing-page.html - 310 + apps/client/src/app/pages/i18n/i18n-page.html + 4 - - Learn more about Ghostfolio + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/landing/landing-page.html - 315 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - What our users are saying + + Open Source Wealth Management Software - apps/client/src/app/pages/landing/landing-page.html - 323 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Members from around the globe are using Ghostfolio Premium + + New apps/client/src/app/pages/landing/landing-page.html - 358 + 7 - - How does Ghostfolio work? + + Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 373 + 11 - - Get started in only 3 steps + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 376 + 15 - - Sign up anonymously* + + Get Started apps/client/src/app/pages/landing/landing-page.html - 382 + 47 - - - * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 384 + 431 - - Add any of your historical transactions + + or apps/client/src/app/pages/landing/landing-page.html - 395 + 52 - - Get valuable insights of your portfolio composition + + Live Demo apps/client/src/app/pages/landing/landing-page.html - 407 + 55 - - - Are you ready? apps/client/src/app/pages/landing/landing-page.html - 419 + 436 - - Join now or check out the example account + + Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 420 + 75 - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + + Stars on GitHub + + apps/client/src/app/pages/landing/landing-page.html + 93 + + + apps/client/src/app/pages/open/open-page.html + 103 + + + + Pulls on Docker Hub + + apps/client/src/app/pages/landing/landing-page.html + 111 + + + apps/client/src/app/pages/open/open-page.html + 117 + + + + As seen in + + apps/client/src/app/pages/landing/landing-page.html + 119 + + + + Protect your assets. Refine your personal investment strategy. + + apps/client/src/app/pages/landing/landing-page.html + 221 + + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + + apps/client/src/app/pages/landing/landing-page.html + 225 + + + + 360° View + + apps/client/src/app/pages/landing/landing-page.html + 236 + + + + Get the full picture of your personal finances across multiple platforms. + + apps/client/src/app/pages/landing/landing-page.html + 238 + + + + Web3 Ready + + apps/client/src/app/pages/landing/landing-page.html + 247 + + + + Use Ghostfolio anonymously and own your financial data. + + apps/client/src/app/pages/landing/landing-page.html + 249 + + + + Open Source + + apps/client/src/app/pages/landing/landing-page.html + 257 + + + + Benefit from continuous improvements through a strong community. + + apps/client/src/app/pages/landing/landing-page.html + 259 + + + + Why Ghostfolio? + + apps/client/src/app/pages/landing/landing-page.html + 268 + + + + Ghostfolio is for you if you are... + + apps/client/src/app/pages/landing/landing-page.html + 269 + + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + + apps/client/src/app/pages/landing/landing-page.html + 276 + + + + pursuing a buy & hold strategy + + apps/client/src/app/pages/landing/landing-page.html + 282 + + + + interested in getting insights of your portfolio composition + + apps/client/src/app/pages/landing/landing-page.html + 287 + + + + valuing privacy and data ownership + + apps/client/src/app/pages/landing/landing-page.html + 292 + + + + into minimalism + + apps/client/src/app/pages/landing/landing-page.html + 295 + + + + caring about diversifying your financial resources + + apps/client/src/app/pages/landing/landing-page.html + 299 + + + + interested in financial independence + + apps/client/src/app/pages/landing/landing-page.html + 303 + + + + saying no to spreadsheets in + + apps/client/src/app/pages/landing/landing-page.html + 307 + + + + still reading this list + + apps/client/src/app/pages/landing/landing-page.html + 310 + + + + Learn more about Ghostfolio + + apps/client/src/app/pages/landing/landing-page.html + 315 + + + + What our users are saying + + apps/client/src/app/pages/landing/landing-page.html + 323 + + + + Members from around the globe are using Ghostfolio Premium + + apps/client/src/app/pages/landing/landing-page.html + 358 + + + + How does Ghostfolio work? + + apps/client/src/app/pages/landing/landing-page.html + 373 + + + + Get started in only 3 steps + + apps/client/src/app/pages/landing/landing-page.html + 376 + + + + Sign up anonymously* + + apps/client/src/app/pages/landing/landing-page.html + 382 + + + + * no e-mail address nor credit card required + + apps/client/src/app/pages/landing/landing-page.html + 384 + + + + Add any of your historical transactions + + apps/client/src/app/pages/landing/landing-page.html + 395 + + + + Get valuable insights of your portfolio composition + + apps/client/src/app/pages/landing/landing-page.html + 407 + + + + Are you ready? + + apps/client/src/app/pages/landing/landing-page.html + 419 + + + + Join now or check out the example account + + apps/client/src/app/pages/landing/landing-page.html + 420 + + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. apps/client/src/app/pages/open/open-page.html 6 @@ -4062,7 +4532,7 @@ Do you really want to delete all your activities? apps/client/src/app/pages/portfolio/activities/activities-page.component.ts - 140 + 183 @@ -4083,26 +4553,51 @@ 51 - - Mortgages, personal loans, credit cards + + One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 27 - - Luxury items, real estate, private companies + + Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 33 - - Account - + + Revenue for lending out money + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + + Mortgages, personal loans, credit cards + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 45 + + + + Luxury items, real estate, private companies + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + + Account + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 69 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 301 + libs/ui/src/lib/activities-table/activities-table.component.html 387 @@ -4125,16 +4620,20 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 228 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 203 + libs/ui/src/lib/activities-table/activities-table.component.html 259 - + Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 198 @@ -4147,44 +4646,55 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 267 + + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 227 + libs/ui/src/lib/activities-table/activities-table.component.html 288 + + Oops! Could not get the historical exchange rate from + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 258 + + Import Activities apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 40 + 43 Import Dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 79 + 85 Importing data... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 113 + 119 Import has been completed apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 121 + 127 Validating data... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 224 + 232 @@ -4215,6 +4725,13 @@ 65 + + Choose or drop a file here + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + The following file formats are supported: @@ -4240,26 +4757,11 @@ Back apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 141 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 - - - - Import - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 150 + 162 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + 199 @@ -4496,42 +4998,42 @@ Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 86 + 88 Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 136 + 140 Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 166 + 170 Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 191 Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 196 + 200 Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 223 + 227 @@ -4569,6 +5071,27 @@ 57 + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + + Currency Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 + + + + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + Holdings @@ -4736,17 +5259,6 @@ 314 - - per year - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 33 - - - apps/client/src/app/pages/pricing/pricing-page.html - 332 - - Renew Plan @@ -4810,21 +5322,6 @@ 12 - - Create Account - - apps/client/src/app/app.component.html - 18 - - - apps/client/src/app/pages/register/register-page.html - 26 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 - - Continue with Internet Identity @@ -5677,238 +6174,429 @@ 37 - - Founded + + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 67 + 48 - - Origin + + Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 67 + + + + Origin + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -10031,3469 +10719,2920 @@ 164 - - Notes + + Starting from apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 196 + 185 - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 204 + 190 - - Ready to take your investments to the next level? + + year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 217 + 186 - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 221 + 191 - - Get Started + + Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 226 + 196 - - Personal Finance Tools + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 302 + 204 - - Switzerland + + Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 506 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 548 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Global - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 70 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 317 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 438 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 549 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - United States - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 189 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 198 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 208 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 218 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 328 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 405 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 415 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 425 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 494 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 517 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 537 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 559 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Belgium - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Germany - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 128 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 178 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 315 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 361 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Austria - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 238 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Italy - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 372 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 382 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Thailand - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 394 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 436 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 447 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 484 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Resources - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Guides - apps/client/src/app/pages/resources/resources-page.html - 5 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Glossary - apps/client/src/app/pages/resources/resources-page.html - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - - Grant access - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 217 - - Public + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - My Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Auto - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Please enter your coupon code: - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Could not redeem coupon code - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Coupon code has been redeemed - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Reload - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Do you really want to remove this sign in method? - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Membership - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Valid until - libs/ui/src/lib/membership-card/membership-card.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Upgrade - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Renew - apps/client/src/app/components/user-account-membership/user-account-membership.html - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Try Premium - apps/client/src/app/components/user-account-membership/user-account-membership.html - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Redeem Coupon - apps/client/src/app/components/user-account-membership/user-account-membership.html - 55 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Presenter View - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Base Currency - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Language - apps/client/src/app/components/user-account-settings/user-account-settings.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Locale - apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Date and number format - apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Appearance - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Auto - apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Light - apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Dark - apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Distraction-free experience for turbulent times - apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Biometric Authentication - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Sign in with fingerprint - apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Experimental Features - apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Sneak peek at upcoming functionality - apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - User ID - apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Export Data - apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Granted Access - apps/client/src/app/components/user-account-access/user-account-access.html - 5 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Oops, authentication has failed. - apps/client/src/app/pages/webauthn/webauthn-page.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Try again - apps/client/src/app/pages/webauthn/webauthn-page.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Go back to Home Page - apps/client/src/app/pages/webauthn/webauthn-page.html - 30 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Import Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - libs/ui/src/lib/activities-table/activities-table.component.html - 453 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Import Dividends - libs/ui/src/lib/activities-table/activities-table.component.html - 35 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - libs/ui/src/lib/activities-table/activities-table.component.html - 464 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Export Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - libs/ui/src/lib/activities-table/activities-table.component.html - 476 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Export Drafts as ICS - libs/ui/src/lib/activities-table/activities-table.component.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - libs/ui/src/lib/activities-table/activities-table.component.html - 488 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Delete all Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 69 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Draft - libs/ui/src/lib/activities-table/activities-table.component.html - 189 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Clone - libs/ui/src/lib/activities-table/activities-table.component.html - 513 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - - Export Draft as ICS - libs/ui/src/lib/activities-table/activities-table.component.html - 523 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 221 - - Do you really want to delete this activity? + + Get Started - libs/ui/src/lib/activities-table/activities-table.component.ts - 227 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Filter by account, currency, symbol or type... - libs/ui/src/lib/activities-table/activities-table.component.ts - 427 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Index - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Change from All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 79 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - from ATH - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Market data provided by - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Savings Rate per Month - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Annual Interest Rate - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Retirement Date - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Projected Total Amount - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Interest - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - libs/ui/src/lib/i18n.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Savings - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 351 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Allocation - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Show all - libs/ui/src/lib/holdings-table/holdings-table.component.html - 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Account - libs/ui/src/lib/i18n.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Asia-Pacific - libs/ui/src/lib/i18n.ts - 5 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Asset Class - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Asset Sub Class - libs/ui/src/lib/i18n.ts - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Core - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Switch to Ghostfolio Premium easily - libs/ui/src/lib/i18n.ts - 10 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Emergency Fund - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Grant - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Higher Risk - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - This activity already exists. - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Japan - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 - - - Lower Risk - libs/ui/src/lib/i18n.ts - 17 - - - - Month - - libs/ui/src/lib/i18n.ts - 18 - - - - Months - - libs/ui/src/lib/i18n.ts - 19 - - - - Other - - libs/ui/src/lib/i18n.ts - 20 - - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 384 - - - - Preset - - libs/ui/src/lib/i18n.ts - 21 - - - - Retirement Provision - - libs/ui/src/lib/i18n.ts - 22 - - - - Satellite - - libs/ui/src/lib/i18n.ts - 23 - - - - Symbol - - libs/ui/src/lib/i18n.ts - 24 - - - - Tag - - libs/ui/src/lib/i18n.ts - 25 - - - - Year - - libs/ui/src/lib/i18n.ts - 26 - - - - Years - - libs/ui/src/lib/i18n.ts - 27 - - - - Buy - - libs/ui/src/lib/i18n.ts - 30 - - - - Valuable - - libs/ui/src/lib/i18n.ts - 34 - - - - Liability - - libs/ui/src/lib/i18n.ts - 35 - - - - Sell - - libs/ui/src/lib/i18n.ts - 36 - - - - Cash - - libs/ui/src/lib/i18n.ts - 39 - - - - Commodity - - libs/ui/src/lib/i18n.ts - 40 - - - - Equity - - libs/ui/src/lib/i18n.ts - 41 - - - - Fixed Income - - libs/ui/src/lib/i18n.ts - 42 - - - - Real Estate - - libs/ui/src/lib/i18n.ts - 43 - - - - Bond - - libs/ui/src/lib/i18n.ts - 46 - - - - Cryptocurrency - - libs/ui/src/lib/i18n.ts - 47 - - - - ETF - - libs/ui/src/lib/i18n.ts - 48 - - - - Mutual Fund - - libs/ui/src/lib/i18n.ts - 49 - - - - Precious Metal - - libs/ui/src/lib/i18n.ts - 50 - - - - Private Equity - - libs/ui/src/lib/i18n.ts - 51 - - - - Stock - - libs/ui/src/lib/i18n.ts - 52 - - - - Africa - - libs/ui/src/lib/i18n.ts - 55 - - - - Asia - - libs/ui/src/lib/i18n.ts - 56 - - - - Europe - - libs/ui/src/lib/i18n.ts - 57 - - - - North America - - libs/ui/src/lib/i18n.ts - 58 - - - - Oceania - - libs/ui/src/lib/i18n.ts - 59 - - - - South America - - libs/ui/src/lib/i18n.ts - 60 - - - - Time to add your first activity. - - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 - - - - No data available - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 386 - - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 399 - - - - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 - - - - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - Fee - - libs/ui/src/lib/i18n.ts - 32 - - - - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 - - - - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 - - - - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 27 - - - - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 - - - - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 - - - - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 - - - - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 - - - - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 458 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 474 - - - - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 - - - - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 100 - - - - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 - - - - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 - - - - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 - - - - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 22 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 - - - - Find holding... - - libs/ui/src/lib/assistant/assistant.component.ts - 89 - - - - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 27 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 - - - - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 - - - - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 - - - - Finland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 466 - - - - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - Asset Profile - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Last All Time High - - libs/ui/src/lib/benchmark/benchmark.component.html - 63 - - - - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Do you really want to delete this asset profile? - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 - - - - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - User - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 226 + + + Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 - - - - Canada - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 529 - - - - Open Source Wealth Management Software - - apps/client/src/app/pages/i18n/i18n-page.html - 13 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - - - Poland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 119 - - - - Extreme Fear - - libs/ui/src/lib/i18n.ts - 63 - - - - Extreme Greed - - libs/ui/src/lib/i18n.ts - 64 - - - - Neutral - - libs/ui/src/lib/i18n.ts - 67 - - - - South Africa - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 227 - - - - Oops! Could not parse historical data. - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 - - - - Do you really want to delete this system message? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 - - - - 200-Day Trend - - libs/ui/src/lib/benchmark/benchmark.component.html - 39 - - - - 50-Day Trend - - libs/ui/src/lib/benchmark/benchmark.component.html - 15 - - - - Cash Balances - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 88 - - - - Do you really want to delete this account balance? - - libs/ui/src/lib/account-balances/account-balances.component.ts - 56 + 302 - - - year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + 302 + + + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 90 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 506 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 317 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 438 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 137 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 147 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 189 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 208 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 218 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 270 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 292 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 328 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 330 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 340 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 405 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 415 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 425 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 494 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 517 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 186 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 537 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 109 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 458 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Poland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 119 + + + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 128 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 260 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 315 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + South Africa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 227 + + + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 447 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + Finland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + Canada - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 529 + + + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 12 + + + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/resources-page.html + 5 + + + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/resources-page.html + 75 + + + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 22 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 39 + + + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 45 + + + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 32 + + + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/webauthn/webauthn-page.html + 18 + + + Try again - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/webauthn/webauthn-page.html + 26 + + + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 + + + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 + + + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 361 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 453 + + + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 372 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 464 + + + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 384 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 476 - - Starting from + + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 51 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 396 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 488 + + + Delete all Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 69 + + + Draft - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 140 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 189 + + + Clone - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 421 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 513 + + + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.html + 431 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.html + 523 + + + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table-lazy/activities-table-lazy.component.ts + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/activities-table/activities-table.component.ts + 227 + + + + Filter by account, currency, symbol or type... + + libs/ui/src/lib/activities-table/activities-table.component.ts + 427 + + + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/assistant/assistant.component.ts + 95 + + + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Index - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 79 + + + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 60 + + + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 341 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 33 + + + Savings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 351 + + + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 + + + Show all - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 172 + + + Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 7 + + + Core - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 8 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 9 + + + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 10 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 11 + + + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 12 + + + Grant - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 13 + + + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 14 + + + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 15 + + + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185 + libs/ui/src/lib/i18n.ts + 16 + + + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 17 + + + Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 18 + + + Months - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 19 + + + Other - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 384 + + + Preset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 21 + + + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 22 + + + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 23 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + + + Symbol + + libs/ui/src/lib/i18n.ts + 24 + + + Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 25 + + + Year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 26 + + + Years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 27 + + + Buy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 30 + + + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 32 + + + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 34 + + + Liability - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 35 + + + Sell - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 36 + + + Cash - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 39 + + + Commodity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 40 + + + Equity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 41 + + + Fixed Income - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 42 + + + Real Estate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 43 + + + Bond - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 46 + + + Cryptocurrency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 47 + + + ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 48 + + + Mutual Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 49 + + + Precious Metal - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 50 + + + Private Equity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 51 + + + Stock - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 52 + + + Africa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 55 + + + Asia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 56 + + + Europe - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 57 + + + North America - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 58 + + + Oceania - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 59 + + + South America - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 60 + + + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 67 + + + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + Valid until - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 + + + Time to add your first activity. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 + + + No data available - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 386 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 399 + + + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 53 + + + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/assistant/assistant.html + 96 + + + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 297 + + + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 261 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index fbcc5e73f..3aaf768c2 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -385,7 +385,7 @@ ngx-skeleton-loader { .has-info-message { .page.has-tabs { - height: calc(100vh - 2 * var(--mat-toolbar-standard-height)); + height: calc(100svh - 2 * var(--mat-toolbar-standard-height)); } } @@ -505,6 +505,8 @@ ngx-skeleton-loader { display: flex; flex-direction: column; overflow-y: auto; + padding-bottom: env(safe-area-inset-bottom); + padding-bottom: constant(safe-area-inset-bottom); .fab-container { bottom: 2rem; @@ -520,9 +522,7 @@ ngx-skeleton-loader { } &.has-tabs { - height: calc(100vh - var(--mat-toolbar-standard-height)); - padding-bottom: env(safe-area-inset-bottom); - padding-bottom: constant(safe-area-inset-bottom); + height: calc(100svh - var(--mat-toolbar-standard-height)); .fab-container { @media (max-width: 575.98px) { diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index b8369d60a..18926f0b8 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -39,7 +39,6 @@ export const DEFAULT_CURRENCY = 'USD'; export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy'; export const DEFAULT_LANGUAGE_CODE = 'en'; export const DEFAULT_PAGE_SIZE = 50; -export const DEFAULT_REQUEST_TIMEOUT = ms('2 seconds'); export const DEFAULT_ROOT_URL = 'http://localhost:4200'; export const EMERGENCY_FUND_TAG_ID = '4452656d-9fa4-4bd0-ba38-70492e31d180'; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 7d76c419e..2875cb305 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -11,6 +11,7 @@ import type { BenchmarkMarketDataDetails } from './benchmark-market-data-details import type { BenchmarkProperty } from './benchmark-property.interface'; import type { Benchmark } from './benchmark.interface'; import type { Coupon } from './coupon.interface'; +import type { Currency } from './currency.interface'; import type { DataProviderInfo } from './data-provider-info.interface'; import type { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; import type { Export } from './export.interface'; @@ -42,8 +43,8 @@ import type { PortfolioPerformanceResponse } from './responses/portfolio-perform import type { ScraperConfiguration } from './scraper-configuration.interface'; import type { Statistics } from './statistics.interface'; import type { Subscription } from './subscription.interface'; -import { SystemMessage } from './system-message.interface'; -import { TabConfiguration } from './tab-configuration.interface'; +import type { SystemMessage } from './system-message.interface'; +import type { TabConfiguration } from './tab-configuration.interface'; import type { TimelinePosition } from './timeline-position.interface'; import type { UniqueAsset } from './unique-asset.interface'; import type { UserSettings } from './user-settings.interface'; @@ -63,6 +64,7 @@ export { BenchmarkProperty, BenchmarkResponse, Coupon, + Currency, DataProviderInfo, EnhancedSymbolProfile, Export, diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index 2cfd9eff2..4cb67dcf5 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -16,8 +16,11 @@ import { } from '@angular/core'; import { FormControl } from '@angular/forms'; import { MatMenuTrigger } from '@angular/material/menu'; +import { ToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { User } from '@ghostfolio/common/interfaces'; +import { DateRange } from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs'; import { @@ -73,8 +76,10 @@ export class AssistantComponent implements OnDestroy, OnInit { @Input() deviceType: string; @Input() hasPermissionToAccessAdminControl: boolean; + @Input() user: User; @Output() closed = new EventEmitter(); + @Output() dateRangeChanged = new EventEmitter(); @ViewChild('menuTrigger') menuTriggerElement: MatMenuTrigger; @ViewChild('search', { static: true }) searchElement: ElementRef; @@ -84,6 +89,7 @@ export class AssistantComponent implements OnDestroy, OnInit { public static readonly SEARCH_RESULTS_DEFAULT_LIMIT = 5; + public dateRangeOptions = ToggleComponent.DEFAULT_DATE_RANGE_OPTIONS; public isLoading = false; public isOpen = false; public placeholder = $localize`Find holding...`; @@ -165,6 +171,10 @@ export class AssistantComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } + public onChangeDateRange(dateRangeString: string) { + this.dateRangeChanged.emit(dateRangeString as DateRange); + } + public onCloseAssistant() { this.setIsOpen(false); diff --git a/libs/ui/src/lib/assistant/assistant.html b/libs/ui/src/lib/assistant/assistant.html index 0644c945e..4f16d5d2d 100644 --- a/libs/ui/src/lib/assistant/assistant.html +++ b/libs/ui/src/lib/assistant/assistant.html @@ -86,3 +86,23 @@
+
+ + + Date Range +
+ +
+
+
+
diff --git a/libs/ui/src/lib/assistant/assistant.module.ts b/libs/ui/src/lib/assistant/assistant.module.ts index e4f48e8f3..abeb3aa75 100644 --- a/libs/ui/src/lib/assistant/assistant.module.ts +++ b/libs/ui/src/lib/assistant/assistant.module.ts @@ -2,7 +2,9 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; +import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { GfAssistantListItemModule } from './assistant-list-item/assistant-list-item.module'; @@ -15,7 +17,9 @@ import { AssistantComponent } from './assistant.component'; CommonModule, FormsModule, GfAssistantListItemModule, + GfToggleModule, MatButtonModule, + MatTabsModule, NgxSkeletonLoaderModule, ReactiveFormsModule, RouterModule diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts index f75b684dd..b86ff44da 100644 --- a/libs/ui/src/lib/currency-selector/currency-selector.component.ts +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -16,7 +16,7 @@ import { } from '@angular/material/autocomplete'; import { MatFormFieldControl } from '@angular/material/form-field'; import { MatInput } from '@angular/material/input'; -import { Currency } from '@ghostfolio/common/interfaces/currency.interface'; +import { Currency } from '@ghostfolio/common/interfaces'; import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; import { Subject } from 'rxjs'; import { map, startWith, takeUntil } from 'rxjs/operators'; diff --git a/package.json b/package.json index 8fcf54808..a058d4f62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.32.0", + "version": "2.34.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -114,7 +114,7 @@ "lodash": "4.17.21", "marked": "9.1.6", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.9.0", + "ng-extract-i18n-merge": "2.9.1", "ngx-device-detector": "5.0.1", "ngx-markdown": "17.1.1", "ngx-skeleton-loader": "7.0.0", @@ -147,16 +147,16 @@ "@angular/pwa": "17.0.3", "@nestjs/schematics": "10.0.1", "@nestjs/testing": "10.1.3", - "@nx/angular": "17.0.2", - "@nx/cypress": "17.0.2", - "@nx/eslint-plugin": "17.0.2", - "@nx/jest": "17.0.2", - "@nx/js": "17.0.2", - "@nx/nest": "17.0.2", - "@nx/node": "17.0.2", - "@nx/storybook": "17.0.2", - "@nx/web": "17.0.2", - "@nx/workspace": "17.0.2", + "@nx/angular": "17.2.8", + "@nx/cypress": "17.2.8", + "@nx/eslint-plugin": "17.2.8", + "@nx/jest": "17.2.8", + "@nx/js": "17.2.8", + "@nx/nest": "17.2.8", + "@nx/node": "17.2.8", + "@nx/storybook": "17.2.8", + "@nx/web": "17.2.8", + "@nx/workspace": "17.2.8", "@schematics/angular": "17.0.0", "@simplewebauthn/typescript-types": "8.0.0", "@storybook/addon-essentials": "7.5.3", @@ -186,9 +186,9 @@ "import-sort-style-module": "6.0.0", "jest": "29.4.3", "jest-environment-jsdom": "29.4.3", - "jest-preset-angular": "13.1.3", - "nx": "17.0.2", - "prettier": "3.1.0", + "jest-preset-angular": "13.1.4", + "nx": "17.2.8", + "prettier": "3.1.1", "prettier-plugin-organize-attributes": "1.0.0", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/yarn.lock b/yarn.lock index 56a38aebe..6caa1b82e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3629,98 +3629,98 @@ read-package-json-fast "^3.0.0" which "^4.0.0" -"@nrwl/angular@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-17.0.2.tgz#df4c25b2ed1eca8b61523360916ba239a783a679" - integrity sha512-GheVvG6IiOWfJySLvJY8JMf+O9vaM5KDn4eWaFvT5Vx41UCk1/h36ePlWiOA5Is9wboKCBbijzc9TgW/F3QkiA== +"@nrwl/angular@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-17.2.8.tgz#5e50fa7d4faac7eabbc41b383129464df2235616" + integrity sha512-hMTKcZDjsnyQojJ33IaCwoPVdFLqTLfCe/e52mn8ecELBSY3/ARZfmUpkSPSZ+261uEHjk0pTfQhu0CF7r2/HQ== dependencies: - "@nx/angular" "17.0.2" + "@nx/angular" "17.2.8" tslib "^2.3.0" -"@nrwl/cypress@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-17.0.2.tgz#ebdfd97671bcdc9a4069359fd6091f8b8a49569e" - integrity sha512-lV3JCBtB7QZXIp3BDmnDbtUDTYt9LHgUePoEG1ohO7D+J71hsx4s8iRo6lOr+HxemlxdBmhSLJlqMTKZv4B1iQ== +"@nrwl/cypress@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-17.2.8.tgz#0fcdece62e35ed7a02fc7b92c0dfc9d1743726e7" + integrity sha512-32owq2ybkkKOIeqQ/mkwBzFH4HPukmHEJyJ4v95sUgY8qrnj/Ca89vozdJ6WEvUiqcAb7ebrmp/nqFCz7PIWbg== dependencies: - "@nx/cypress" "17.0.2" + "@nx/cypress" "17.2.8" -"@nrwl/devkit@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-17.0.2.tgz#f9d2bab38c625e3a5edb5e4f04a27c1c56aa8693" - integrity sha512-zgqTFYmvs80D3T/TwmR/EBdV1OU2c96YYHngAe3DX8kXhjlV3dq+VPZVBROM0AzYLGaSckW3mHBhgL+JrDp5Pg== +"@nrwl/devkit@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-17.2.8.tgz#dd3467b484c4611454a45541ffb29e4de5b2ebe7" + integrity sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw== dependencies: - "@nx/devkit" "17.0.2" + "@nx/devkit" "17.2.8" -"@nrwl/eslint-plugin-nx@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-17.0.2.tgz#256b9797162ba08e8a09dc4ddda0143fc2abef85" - integrity sha512-kVsyHqaFgWPgCk7C+aimctq1MNnmqQEqCwmB/EC7kPYWPLvF5l7JqlTrDZAmIaCDBKIUUqJsZLO9d46vT5Z9xw== +"@nrwl/eslint-plugin-nx@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-17.2.8.tgz#bf3a3c0820eb9a6bf42355ec1012799136595801" + integrity sha512-g76ZzBvJ7jenvLXQuXdBUs7p3KP2vr00u7TV4A/J01eDJMFHYVZhYfQNjLhr4nnE4NvNRr8WdrMD2KeGYtdycQ== dependencies: - "@nx/eslint-plugin" "17.0.2" + "@nx/eslint-plugin" "17.2.8" -"@nrwl/jest@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-17.0.2.tgz#9d7d3a041b421e84a003d34ed46b89e442f6ec52" - integrity sha512-917A/kc3OvwZxi6f5LByp5/j1cByARc7t1yQx+qHW4vl4wtMPcK1Pcl619tLb+DURI/z5Zz9MQvSsdzr4F6ZWg== +"@nrwl/jest@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-17.2.8.tgz#188644e3177c47e1160cb135662b7697bb152467" + integrity sha512-suyAm+5dj03ZevZW0fEZJSn+au1k6+OGPo4LKQ9Y4u/QJW52d2k0nOzrKu79CwkdKP5PFhjnvPP4Oo93RbNNnA== dependencies: - "@nx/jest" "17.0.2" + "@nx/jest" "17.2.8" -"@nrwl/js@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-17.0.2.tgz#d9338b58b063b96f02fb12241f83d743d9e9378c" - integrity sha512-qHqZ6V6IP3piyzb9s7HUlcV3X2O/BDmqikg0yoZGitRpyugY5K1BNZITGRmFEzLklfHxVUqI1qsURnClgax+pA== +"@nrwl/js@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-17.2.8.tgz#d10795206769bd30faaf9e137e971ae402977731" + integrity sha512-ZfTGNSmSBqvEfP8NOfOHcnqKwhXsfqBrN4IhthQR02sqTA9GkrjSfSUtcGXY01fUitsNUDOn6RZjgX6UysDCXg== dependencies: - "@nx/js" "17.0.2" + "@nx/js" "17.2.8" -"@nrwl/nest@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-17.0.2.tgz#5f819c1060340eb343307dfc3c09f441dd4011b1" - integrity sha512-uwvIY23mxfNqLW7r5nJATzofRJR23hajdqbQ3J9a0J9ssJ1kIjrLPU+IEUkyldRQ+tbJTEB7vzvrZ6XW2vPjuw== +"@nrwl/nest@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-17.2.8.tgz#52ed0729cfece3a763b337e5a00183eb5be9a4ef" + integrity sha512-pj2UNE7XM/7JdKlGhywXOVaCXZE3Fpd7eoZNZc8fBq+pcxvX3ylh4KLmnCwcSaKlcqFsYkWbmj6xDBJx8xSGoA== dependencies: - "@nx/nest" "17.0.2" + "@nx/nest" "17.2.8" -"@nrwl/node@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-17.0.2.tgz#e1ef75e3c8cc9ecb59e30e6aa5e3084f45040e43" - integrity sha512-G7nOcwnSV+fP/WahBo6Rl9q6uelFeCSHP5sm9UcPhMFb0TC8UeFMK4XkrqW4HA+tyHMeHzNZ92De31wHMfVfgg== +"@nrwl/node@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-17.2.8.tgz#f2cd32f92979096698c18a361a598e3a98fbf06f" + integrity sha512-DGwPAasjDgSrNJcB2qcCA7y02licJFCNyiGhEnIhLEUCWOyPCrAsuPmBy4/QYFoiEP6YOsIpJac/1p+9QWeJ7Q== dependencies: - "@nx/node" "17.0.2" + "@nx/node" "17.2.8" -"@nrwl/storybook@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-17.0.2.tgz#82f5eb91fda49c6ed90cbf90588440761e4fe507" - integrity sha512-vdMIdH0oCNjzNp+LQDaK2cqvRe1Tpti7uCrVin9Jv2aM3+d0oguSO7f99x4nueK0Z7bB1qCvpfXXJVxD6E7Puw== +"@nrwl/storybook@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-17.2.8.tgz#7e4f4b5bcf6f19b5dd759c4e729d6443e6b78aa6" + integrity sha512-YBedhVfpylP48lG7VqB7xdiPp5DsEY6aFeabiZC3DQWK+oaMAIOYUKFD6+LiviDoPGpIJCeoJRC0UcnAuaLO7g== dependencies: - "@nx/storybook" "17.0.2" + "@nx/storybook" "17.2.8" -"@nrwl/tao@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-17.0.2.tgz#998f9188dd319e73e5123b068c06b8fb2fc56f12" - integrity sha512-H+htIRzQR6Ibael34rhQkpNkpFFFmaSTsIzdqkBqL4j5+FzSpZh67NJnWSY8vsYQGQL8Ncc+MHvpQC+7pyfgGw== +"@nrwl/tao@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-17.2.8.tgz#41ff3d715a0763e95cf5c35e7f79cd3be358dc5f" + integrity sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg== dependencies: - nx "17.0.2" + nx "17.2.8" tslib "^2.3.0" -"@nrwl/web@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-17.0.2.tgz#564786ee874f45cbd58f2406b89f14e47f21e4b8" - integrity sha512-+kSGZ0DOEl6MoWmfCtxcDlmZV/+mqY+pGS+qSB3kZGwfRkpwbv1spAPcYyfUB2wNed9js/lSRGt9sBcwWcIY0Q== +"@nrwl/web@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-17.2.8.tgz#5ff1c388a5e26a345d445eb52d8e5474e3d48bd3" + integrity sha512-oBiuSQ7Q6hOXHuZW5Gf8m0gcrLTV78jxhSjmhC5F6yzgvBvnfMpCdrJn7W1G+O+kEg3byko8v+Rz39tfc8YPjg== dependencies: - "@nx/web" "17.0.2" + "@nx/web" "17.2.8" -"@nrwl/webpack@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-17.0.2.tgz#4fc28a0308b36f89c011f7dff096a58bb237c1e5" - integrity sha512-5Kx9drlEGchWDlE8x7uxRIqZEzm8TZll07NUTm++wKWukHhCZZksqojRQkRLq28iO2BFQm12boa78Ku0u3Ob4g== +"@nrwl/webpack@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-17.2.8.tgz#e0d5061c62f6896c6ff0b2b2d4fbda950cc9afa7" + integrity sha512-HcwdfjXVz1NrZZnx1Fv48vleOTlsDAgTRHnQL02xYWT6ElhuKRQsqJGvDduQIFAp4KrnEEhEKEx6oDAEZKUkDg== dependencies: - "@nx/webpack" "17.0.2" + "@nx/webpack" "17.2.8" -"@nrwl/workspace@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-17.0.2.tgz#9840eae5ee0c35e693cfbce152ce6c3db6c8c4fa" - integrity sha512-ntX+cE6Gs1MOdG027MHkueyEze4yNbRy54uXhWhOCUy5gcP4eNmsrxOOccajP7tVrvAW83wrp9PXJ1wQhNWOYA== +"@nrwl/workspace@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-17.2.8.tgz#79d0c143d38087c3e8ee1401c1f977696e5055cd" + integrity sha512-RiTDTuzdueZ+++kNQAENHdHbYToOhzO56XWxKOGoMEUSpcmbKRAFReFBzNqD91Fnv562vkW1VNRIb6Ey7X1YHQ== dependencies: - "@nx/workspace" "17.0.2" + "@nx/workspace" "17.2.8" "@nuxtjs/opencollective@0.3.2": version "0.3.2" @@ -3731,20 +3731,20 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@nx/angular@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/angular/-/angular-17.0.2.tgz#063627fd1ed61b1ef77055da5f0e89f0ce43ff28" - integrity sha512-I3C9ImpFYChIVWrXLI2cZy1uiJ6zzoHTDd+y1tuhWF+OWMoeCi/iVKyk4DWucdU2AUlpgfJWRVWqCQcMR32U1Q== - dependencies: - "@nrwl/angular" "17.0.2" - "@nx/cypress" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/eslint" "17.0.2" - "@nx/jest" "17.0.2" - "@nx/js" "17.0.2" - "@nx/web" "17.0.2" - "@nx/webpack" "17.0.2" - "@nx/workspace" "17.0.2" +"@nx/angular@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/angular/-/angular-17.2.8.tgz#3112e13a4d1f122da6c81faac56d42baa7582fb8" + integrity sha512-vznuo8z9n/xcuZ4j2wv6lg4GT/SGSBQM+dAyG/8GFm34gEato75rhtbjDlsOzZc4gUEBJXRwtuntnfa7pvW88w== + dependencies: + "@nrwl/angular" "17.2.8" + "@nx/cypress" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/eslint" "17.2.8" + "@nx/jest" "17.2.8" + "@nx/js" "17.2.8" + "@nx/web" "17.2.8" + "@nx/webpack" "17.2.8" + "@nx/workspace" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" "@typescript-eslint/type-utils" "^5.36.1" chalk "^4.1.0" @@ -3758,26 +3758,26 @@ webpack "^5.80.0" webpack-merge "^5.8.0" -"@nx/cypress@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-17.0.2.tgz#6baa48294fa01101d73ef5c8257baa55c7364a1c" - integrity sha512-lkdhz6CHaLA/ZhNnqwXBp4Mlg1eTtCO09pYYHMx43D7EPObO1XbYtm6rivWg6kDzEmz84+Jwo0RucK7loMlHqA== +"@nx/cypress@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-17.2.8.tgz#354fb0b1308499d2580ec270ebfcd565b0ef6f90" + integrity sha512-RjDD2AjDg7D743/+hSgzllLlSi4RwP196Nm0C8ltG5udPK1W+3S0qcERgHgtTuYr6+WVZIMtcZF2Vq09zcbtyg== dependencies: - "@nrwl/cypress" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/eslint" "17.0.2" - "@nx/js" "17.0.2" + "@nrwl/cypress" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/eslint" "17.2.8" + "@nx/js" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" detect-port "^1.5.1" semver "7.5.3" tslib "^2.3.0" -"@nx/devkit@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-17.0.2.tgz#2f931d243dcc08e3cf4e238d782bc14ee40312f6" - integrity sha512-gtJNrFtGZa96qAM4ijAvoCLj/LuUr+Jq91QITsYE4cvYL0qan4zGcAOBMclzpaXVN9pwpko+veDwHwnmp/SXTg== +"@nx/devkit@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-17.2.8.tgz#49b6c94a3c12fba63eae6514fb37a468d0570e2e" + integrity sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw== dependencies: - "@nrwl/devkit" "17.0.2" + "@nrwl/devkit" "17.2.8" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" @@ -3785,43 +3785,43 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nx/eslint-plugin@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-17.0.2.tgz#97775a11bd8b13cb00bac5489a7c33ffddc4cfa2" - integrity sha512-ZI/vthG7wYG9+xA3inYnJ+XP8itMlZpIYT63SZm4h05MRYQG4MkShkrOkSWYBtT2j5b1AgSzSemkpCGuG798pQ== +"@nx/eslint-plugin@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-17.2.8.tgz#bb190ce2152fc4a1999b7fa3b5a0930b87d22a5d" + integrity sha512-SOF/Q1g9SNZnwPpwcZNCYeYU670s1X1hgwHCWisw3jGPTYHvpAMQVGwPyU28OyY4PBrqEOVqLTWsuWQYpUjLOw== dependencies: - "@nrwl/eslint-plugin-nx" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/js" "17.0.2" - "@typescript-eslint/type-utils" "^5.60.1" - "@typescript-eslint/utils" "^5.60.1" + "@nrwl/eslint-plugin-nx" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/js" "17.2.8" + "@typescript-eslint/type-utils" "^6.9.1" + "@typescript-eslint/utils" "^6.9.1" chalk "^4.1.0" confusing-browser-globals "^1.0.9" jsonc-eslint-parser "^2.1.0" semver "7.5.3" tslib "^2.3.0" -"@nx/eslint@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/eslint/-/eslint-17.0.2.tgz#f330aff5154fe11e3e8db73747c183a27e6d54d0" - integrity sha512-mZXavg/m+A0GqmWORq5jNRt7ku0q9OoX2212ldivvLYI1zHHr2VFYoRxhS+NzaZBK5/EiKs/5P8dHhYb4/v7Bw== +"@nx/eslint@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/eslint/-/eslint-17.2.8.tgz#426010f88aa5518454311b2c7d194444a973e662" + integrity sha512-P6s85cIK7LYHixCJFZ+tLCPDxeOt9m2bQQOLxBCLEy5mqaGmjMHzWkLaoQBueCSntE6PSao0MMA+1TeeZjOoDw== dependencies: - "@nx/devkit" "17.0.2" - "@nx/js" "17.0.2" - "@nx/linter" "17.0.2" + "@nx/devkit" "17.2.8" + "@nx/js" "17.2.8" + "@nx/linter" "17.2.8" tslib "^2.3.0" typescript "~5.1.3" -"@nx/jest@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-17.0.2.tgz#0ab94d453cd27479d58824f175f0116fed20d352" - integrity sha512-kpkziUOZpKsVvi5iicirX4EVwfKXaGuiv5bgzj1uiexD83tlds5ne8J2qN/K1ea5jIC+bxHzqJF5s7rF52T0cg== +"@nx/jest@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-17.2.8.tgz#6c0e33b4cbdfdd357230e5a28a093e626bbf01a8" + integrity sha512-FnwwURXmG+uv5ELHjHd9uVbUioCPjefAOtENcasLJMs2WYeu3zePsru5B8GO9BBM5g2eTmw10Y5f0riAikZjcw== dependencies: "@jest/reporters" "^29.4.1" "@jest/test-result" "^29.4.1" - "@nrwl/jest" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/js" "17.0.2" + "@nrwl/jest" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/js" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" chalk "^4.1.0" identity-obj-proxy "3.0.0" @@ -3831,10 +3831,10 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nx/js@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-17.0.2.tgz#5d277ab4439c3245abb246e0aedda241844de0a5" - integrity sha512-dYvWDd0jwNF4h4V8yjd1ZMSJ38GcpvwrDUVYGYNkZmDqYzkBvqykpY00hRLUYZspiR+iG7uWmyxItZYpCk0WyA== +"@nx/js@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/js/-/js-17.2.8.tgz#9f1a620b016ac014125151beacffab18c11952f7" + integrity sha512-M91tw9tfSnkoC8pZaC9wNxrgaFU4MeQcgdT08ievaroo77kH4RheySsU1uNc0J58Jk4X4315wu/X7Bf/35m0Mw== dependencies: "@babel/core" "^7.22.9" "@babel/plugin-proposal-decorators" "^7.22.7" @@ -3842,9 +3842,9 @@ "@babel/preset-env" "^7.22.9" "@babel/preset-typescript" "^7.22.5" "@babel/runtime" "^7.22.6" - "@nrwl/js" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/workspace" "17.0.2" + "@nrwl/js" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/workspace" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" babel-plugin-const-enum "^1.0.1" babel-plugin-macros "^2.8.0" @@ -3866,125 +3866,125 @@ tsconfig-paths "^4.1.2" tslib "^2.3.0" -"@nx/linter@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-17.0.2.tgz#28938d5e42854088fd3356ebd160613dfd4b3706" - integrity sha512-cXCrx/qcZc53GKqOLRIPTqACdby9/plOpfQlo0BlHMOrwvkkKjzXsnoJgR6XRWdegDKVkqUWHWDAjDI3/aMshA== +"@nx/linter@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-17.2.8.tgz#bafc71b40a36b492e538898b254a8932433096b4" + integrity sha512-dwqE742TIw1+/djzlikKakIfComq8nFnhupWjvl7KrU9r8ytcKyQbxHw7KGMUT9HAEG4xSNuwiaELr/8w4MM2Q== dependencies: - "@nx/eslint" "17.0.2" + "@nx/eslint" "17.2.8" -"@nx/nest@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-17.0.2.tgz#3acad658c7ce99582793b724ed6b78331d91b0f8" - integrity sha512-dlvUaC1roqUWs8h0PJOIfbG0MZNwLDudZTsG/YiW94zvVm5NleQ6kwsvAvzSxiPHg6kIo61T6yIUp9OIjFru3g== +"@nx/nest@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-17.2.8.tgz#6e84f2e802f961fa05e04b7a9fff7b55854519de" + integrity sha512-VZ84VBWACcABjU4djWHHVxY83g3VTkg13AjAeZWyvPAMkNqS05e2jj3CpPVd4EAbwqXX3/CLM/bLKRuGWpYCWg== dependencies: "@nestjs/schematics" "^9.1.0" - "@nrwl/nest" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/eslint" "17.0.2" - "@nx/js" "17.0.2" - "@nx/node" "17.0.2" + "@nrwl/nest" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/eslint" "17.2.8" + "@nx/js" "17.2.8" + "@nx/node" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" tslib "^2.3.0" -"@nx/node@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/node/-/node-17.0.2.tgz#0545941a3a1aa09cb153b1a267bab1350e875201" - integrity sha512-//FC3FuSFcMg9j6r3EucCLxJCoLUK56xfLGy6iDilW7LsEX54SB8lau0kq2ymDbBRRT/piI1s7RH+Lk777yBIw== +"@nx/node@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/node/-/node-17.2.8.tgz#57668ee77197423560971596540ba6c61295bde3" + integrity sha512-MxvJ2MlbpHeB5ZnlSAbSvBXAYoxCre4fsAwwCpysz1OWkf9dDGYzvlV4ovnu6jET7/ZQzzDvaKD9CvVSDk/amg== dependencies: - "@nrwl/node" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/eslint" "17.0.2" - "@nx/jest" "17.0.2" - "@nx/js" "17.0.2" + "@nrwl/node" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/eslint" "17.2.8" + "@nx/jest" "17.2.8" + "@nx/js" "17.2.8" tslib "^2.3.0" -"@nx/nx-darwin-arm64@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.0.2.tgz#01ad3267a904996987cd53aa105078a8c6451cbf" - integrity sha512-OSZLRfV8VplYPEqMcIg3mbAsJXlXEHKrdlJ0KUTk8Hih2+wl7cxuSEwG7X7qfBUOz+ognxaqicL+hueNrgwjlQ== - -"@nx/nx-darwin-x64@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-17.0.2.tgz#1752af6003c25f0c8360482da2e959a32e29b150" - integrity sha512-olGt5R2dWYwdl1+I2RfJ8LdZO1elqhr9yDPnMIx//ZuN6T6wJA+Wdp2P3qpM1bY0F1lI/6AgjqzRyrTLUZ9cDA== - -"@nx/nx-freebsd-x64@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.0.2.tgz#e97ec71c418e64d98e53c308cd2b72dcb203ede8" - integrity sha512-+mta0J2G2byd+rfZ275oZs0aYXC/s92nI9ySBFQFQZnKJ6bsAagdZHe+uETsnE4xdhFXD8kvNMJU1WTGlyFyjg== - -"@nx/nx-linux-arm-gnueabihf@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.0.2.tgz#5ac923e09f5676d96fa0c869ea6aec37b0aba100" - integrity sha512-m80CmxHHyNAJ8j/0rkjc0hg/eGQlf6V2sLsV+gEJkz2sTEEdgSOK4DvnWcZRWO/SWBnqigxoHX4Kf5TH1nmoHA== - -"@nx/nx-linux-arm64-gnu@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.0.2.tgz#f48b9ca7767dd63d3d51406c25561c598f815fc8" - integrity sha512-AsD1H6wt68MK1u6vkmtNaFaxDMcyuk6dpo5kq1YT9cfUd614ys3qMUjVp3P2CXxzXh+0UDZeGrc6qotNKOkpJw== - -"@nx/nx-linux-arm64-musl@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.0.2.tgz#cb8839fecf83eb96d787fcccea12322a66bca742" - integrity sha512-f8pUFoZHBFQtHnopHgTEuwIiu0Rzem0dD7iK8SyyBy/lRAADtHCAHxaPAG+iatHAJ9h4DFIB50k9ybYxDtH2mg== - -"@nx/nx-linux-x64-gnu@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.0.2.tgz#200b72d08baec0565494643c45a98bb7754283f9" - integrity sha512-PISrHjLTxv5w8bz50vPZH6puYos88xu28o4IbVyYWrUrhoFsAx9Zbn1D6gWDPMSaKJU32v1l+5bTciQjQJU8fQ== - -"@nx/nx-linux-x64-musl@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.0.2.tgz#2c2da294dbd47ad616ec233e38ee62b30c740fdc" - integrity sha512-2wsqyBRjsxmAjxW+0lnGFtJLTk+AxgW7gjMv8NgLK8P1bc/sJYQB+g0o5op2z+szXRG3Noi0RZ9C0fG39EPFZw== - -"@nx/nx-win32-arm64-msvc@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.0.2.tgz#cb6d224ab1b05eaa6721bd599ff8eb3e99b1c925" - integrity sha512-Sc3sQUcS5xdk05PABe/knG6orG5rmHZdSUj6SMRpvYfN2tM3ziNn6/wCF/LJoW6n70OxrOEXXwLSRK/5WigXbA== - -"@nx/nx-win32-x64-msvc@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.0.2.tgz#64c330208df45608aaaf8784c141203bbe30c4b1" - integrity sha512-XhET0BDk6fbvTBCs7m5gZii8+2WhLpiC1sZchJw4LAJN2VJBiy3I3xnvpQYGFOAWaCb/iUGpuN/qP/NlQ+LNgA== - -"@nx/storybook@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/storybook/-/storybook-17.0.2.tgz#11af64a79dab6181969ce3708027372925876999" - integrity sha512-5yr2BEf1TILkp6WFgIBagYiL+sEj7KxRzVUBEL8MCbpJVUCw/lWN+K/PeQvrOBRc/tV8uiP5p+wRq9EJz6IUgg== - dependencies: - "@nrwl/storybook" "17.0.2" - "@nx/cypress" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/eslint" "17.0.2" - "@nx/js" "17.0.2" +"@nx/nx-darwin-arm64@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.2.8.tgz#26645c9548d5e387b43c06fccfa18e2c1f08055e" + integrity sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg== + +"@nx/nx-darwin-x64@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-17.2.8.tgz#5143d6d01d24e338cb3d39076fe2af95146cb538" + integrity sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw== + +"@nx/nx-freebsd-x64@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.2.8.tgz#82a018a1855170e0243b8fe7b0032af279c3fb83" + integrity sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA== + +"@nx/nx-linux-arm-gnueabihf@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.2.8.tgz#18b9c324221ff6a30589f3fc272a843aca57b70f" + integrity sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA== + +"@nx/nx-linux-arm64-gnu@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.2.8.tgz#54a08640a2babe78bcf3283565b00eb487db595e" + integrity sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg== + +"@nx/nx-linux-arm64-musl@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.2.8.tgz#cd7b673bb9f45fec7aa1b6c880a0d23d658e927f" + integrity sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ== + +"@nx/nx-linux-x64-gnu@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.8.tgz#009eb75c77bf075bc9c13ec4f9caf77821eee639" + integrity sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ== + +"@nx/nx-linux-x64-musl@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.8.tgz#8ee2324068732a135ca4b01081942d5956885167" + integrity sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA== + +"@nx/nx-win32-arm64-msvc@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.2.8.tgz#9bdce5b4d1f9cec7ef326eaf43b99e68576398b0" + integrity sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA== + +"@nx/nx-win32-x64-msvc@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.2.8.tgz#8a86ff250021ad47686b58f1840b348a209b1158" + integrity sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA== + +"@nx/storybook@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/storybook/-/storybook-17.2.8.tgz#b8d3152bdbc95a13414498d0aba0ded532f32038" + integrity sha512-8fQck3mP2i3XWCnq/p5l+Y11TQTr8Gv4L64Rggq6nPuZOk6RbinCPG+VMztqGgQET8q4XTTGt8yw5VOUG0cIyw== + dependencies: + "@nrwl/storybook" "17.2.8" + "@nx/cypress" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/eslint" "17.2.8" + "@nx/js" "17.2.8" "@phenomnomnominal/tsquery" "~5.0.1" semver "7.5.3" tslib "^2.3.0" -"@nx/web@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/web/-/web-17.0.2.tgz#5c1f60a5b740ba1044ab0a74686e38c54f283fa9" - integrity sha512-M8bausXzgkeFlNn43uO3pxtn/1EDoIs/7xgWPoGAdqV4l4RKG0JHqeLi68tP6YVA30RSAZ7UmvKQlKo14uDp0w== +"@nx/web@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/web/-/web-17.2.8.tgz#9fb21757715a7f3f799790541094e81e75f12918" + integrity sha512-ovPvFVJOiB/ZmOxnCOOyT+ibbdgazXjpa4506hLJxRohDZQw/6jwbCWkTBy/ch6Y8NSN6uNUpB5XUdscfrp52A== dependencies: - "@nrwl/web" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/js" "17.0.2" + "@nrwl/web" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/js" "17.2.8" chalk "^4.1.0" detect-port "^1.5.1" http-server "^14.1.0" tslib "^2.3.0" -"@nx/webpack@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-17.0.2.tgz#677ee3fccc35bc1e4a1ba3b15e99586a531ad281" - integrity sha512-TnC+Cpg7MPc6vl1Vu2sVzav/F+6mhmev3tH3nCUFywTwHXrK+i/NQhuvXWEixVt+l77V4Di6VhMKfHaGryfU6Q== +"@nx/webpack@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-17.2.8.tgz#ec5f9a7405bbbdffd82fd7194fbb777f52297c44" + integrity sha512-Gud9Z+VO0dlLpVEJLfPxkEV5wG+ebZ1mv0S0cfTBdD24Fj4MAs0W8QWhRQBtLd2SayU9KMfJr+8gJjkNT6D3Kw== dependencies: "@babel/core" "^7.22.9" - "@nrwl/webpack" "17.0.2" - "@nx/devkit" "17.0.2" - "@nx/js" "17.0.2" + "@nrwl/webpack" "17.2.8" + "@nx/devkit" "17.2.8" + "@nx/js" "17.2.8" autoprefixer "^10.4.9" babel-loader "^9.1.2" browserslist "^4.21.4" @@ -4018,16 +4018,16 @@ webpack-node-externals "^3.0.0" webpack-subresource-integrity "^5.1.0" -"@nx/workspace@17.0.2": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-17.0.2.tgz#ce273f371c8fccb222e66decab2d4bf0de8d0799" - integrity sha512-z2xit36dxdJuQmBDadNbbaYCKUYNk6mUWG/GEeBdgGXvFixqAUZ4lbWARlauCQS/+rEjXGOxtvn+u2d8u9mTSA== +"@nx/workspace@17.2.8": + version "17.2.8" + resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-17.2.8.tgz#61fdfc7757231c423f8a98713c0df65241721592" + integrity sha512-QCriI4CFCuG+0WTbpu3fHljVR1x6bjNSrbq8nqu8Z/3y+si2/O+7lVNSTkQNr1X2eBPqtIX74APS7ExG8c4vog== dependencies: - "@nrwl/workspace" "17.0.2" - "@nx/devkit" "17.0.2" + "@nrwl/workspace" "17.2.8" + "@nx/devkit" "17.2.8" chalk "^4.1.0" enquirer "~2.3.6" - nx "17.0.2" + nx "17.2.8" tslib "^2.3.0" yargs-parser "21.1.1" @@ -6313,8 +6313,24 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== dependencies: - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/visitor-keys" "6.13.1" + +"@typescript-eslint/scope-manager@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz#53d24363fdb5ee0d1d8cda4ed5e5321272ab3d48" + integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== + dependencies: + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + +"@typescript-eslint/scope-manager@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz#40e5214a3e9e048aca55ce33381bc61b6b51c32a" + integrity sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg== + dependencies: + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/visitor-keys" "6.15.0" "@typescript-eslint/type-utils@5.51.0": version "5.51.0" @@ -6336,10 +6352,10 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/type-utils@^5.36.1", "@typescript-eslint/type-utils@^5.60.1": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/type-utils@^6.9.1": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz#ac9cb5ba0615c837f1a6b172feeb273d36e4f8af" + integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== dependencies: "@typescript-eslint/typescript-estree" "5.62.0" "@typescript-eslint/utils" "5.62.0" @@ -6356,10 +6372,20 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" - integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== +"@typescript-eslint/types@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.13.1.tgz#b56f26130e7eb8fa1e429c75fb969cae6ad7bb5c" + integrity sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg== + +"@typescript-eslint/types@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.14.0.tgz#935307f7a931016b7a5eb25d494ea3e1f613e929" + integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== + +"@typescript-eslint/types@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.15.0.tgz#a9f7b006aee52b0948be6e03f521814bf435ddd5" + integrity sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ== "@typescript-eslint/typescript-estree@5.51.0": version "5.51.0" @@ -6392,8 +6418,34 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== dependencies: - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/visitor-keys" "6.13.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz#90c7ddd45cd22139adf3d4577580d04c9189ac13" + integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== + dependencies: + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz#2f8a513df1ce5e6e1ba8e5c6aa52f392ae023fc5" + integrity sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew== + dependencies: + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/visitor-keys" "6.15.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -6414,7 +6466,33 @@ eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.45.0", "@typescript-eslint/utils@^5.60.1": +"@typescript-eslint/utils@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.13.1.tgz#925b3a2453a71ada914ae329b7bb7e7d96634b2f" + integrity sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.13.1" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/typescript-estree" "6.13.1" + semver "^7.5.4" + +"@typescript-eslint/utils@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.14.0.tgz#856a9e274367d99ffbd39c48128b93a86c4261e3" + integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + semver "^7.5.4" + +"@typescript-eslint/utils@^5.45.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -6428,17 +6506,17 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.11.0.tgz#11374f59ef4cea50857b1303477c08aafa2ca604" - integrity sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g== +"@typescript-eslint/utils@^6.9.1": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.15.0.tgz#f80dbb79f3b0f569077a8711dd44186a8933fa4c" + integrity sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.11.0" - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/scope-manager" "6.15.0" + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/typescript-estree" "6.15.0" semver "^7.5.4" "@typescript-eslint/visitor-keys@5.51.0": @@ -6462,7 +6540,23 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== dependencies: - "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/types" "6.13.1" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz#1d1d486581819287de824a56c22f32543561138e" + integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== + dependencies: + "@typescript-eslint/types" "6.14.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz#5baf97a7bfeec6f4894d400437055155a46b2330" + integrity sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w== + dependencies: + "@typescript-eslint/types" "6.15.0" eslint-visitor-keys "^3.4.1" "@vitejs/plugin-basic-ssl@1.0.1": @@ -14758,10 +14852,10 @@ neo-async@^2.5.0, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -ng-extract-i18n-merge@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.9.0.tgz#a487e3cec76a266c7bb61985de62f87828ee2e21" - integrity sha512-xKdkegJcJCzbvsy07IaSxz2AmkHdF3l0UR5mLr5CHai2g1VHD0xhoHPk/6kFFDNJ42fQT8EybPH/YcqZUt2iQg== +ng-extract-i18n-merge@2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.9.1.tgz#f8e4431a8672d27be6508c72f3cf47a318b1ecab" + integrity sha512-EJAgJrV2ZSRoH1njMI9lLLtLJkwabkk41ZZyV+U+6h8e5vDCM4zPGjm0NNZFy+YP+/ST+nlvi2CxprDXnjS8BQ== dependencies: "@angular-devkit/architect" "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0" "@angular-devkit/core" "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" @@ -15052,12 +15146,12 @@ nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -nx@17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/nx/-/nx-17.0.2.tgz#bbc941f9e8ddc886902605f414cda41a21e4cc77" - integrity sha512-utk9ufxLlRd210nEV6cKjMLVK0gup2ZMlNT41lLgUX/gp3Q59G1NkyLo3o29DxBh3AhNJ9q5MKgybmzDNdpudA== +nx@17.2.8: + version "17.2.8" + resolved "https://registry.yarnpkg.com/nx/-/nx-17.2.8.tgz#09482acd5d9b64c115d5ccf12417f1af2787d4d1" + integrity sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw== dependencies: - "@nrwl/tao" "17.0.2" + "@nrwl/tao" "17.2.8" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" @@ -15093,16 +15187,16 @@ nx@17.0.2: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "17.0.2" - "@nx/nx-darwin-x64" "17.0.2" - "@nx/nx-freebsd-x64" "17.0.2" - "@nx/nx-linux-arm-gnueabihf" "17.0.2" - "@nx/nx-linux-arm64-gnu" "17.0.2" - "@nx/nx-linux-arm64-musl" "17.0.2" - "@nx/nx-linux-x64-gnu" "17.0.2" - "@nx/nx-linux-x64-musl" "17.0.2" - "@nx/nx-win32-arm64-msvc" "17.0.2" - "@nx/nx-win32-x64-msvc" "17.0.2" + "@nx/nx-darwin-arm64" "17.2.8" + "@nx/nx-darwin-x64" "17.2.8" + "@nx/nx-freebsd-x64" "17.2.8" + "@nx/nx-linux-arm-gnueabihf" "17.2.8" + "@nx/nx-linux-arm64-gnu" "17.2.8" + "@nx/nx-linux-arm64-musl" "17.2.8" + "@nx/nx-linux-x64-gnu" "17.2.8" + "@nx/nx-linux-x64-musl" "17.2.8" + "@nx/nx-win32-arm64-msvc" "17.2.8" + "@nx/nx-win32-x64-msvc" "17.2.8" oauth@0.9.x: version "0.9.15"